Это не целое решение, я просто выхожу на правильный путь, чтобы говорить.
Вы можете использовать keyPress Event текстового поля, чтобы захватить клавишу, которая была нажата, когда пользователь печатает.
Нам понадобится словарь для хранения картинки, серого img и желтого img, с ключевым значением типа char, которое будет символом, который пользователь введет в текстовое поле
Итак, мы собираемся объявить это так:
Dictionary<char, Tuple<PictureBox, string, string>> List = new
Dictionary<char, Tuple<PictureBox, string, string>>();
Затем, когда форма загружается, вы читаете изображения из их каталога и заполняете списки, и в то же время читаете все имеющиеся у нас картинки-боксы и добавляете их в словарь.
Я использовал groupBox, чтобы сгруппировать элементы управления PictureBox вместе, чтобы сделать цикл.
Я предполагаю, что фотографии названы по ключу.
private void Form9_Load(object sender, EventArgs e)
{
//Reading both yellow and grey Imgs
string[] grey = Directory.GetFiles(@"C:\greyImgs");
string[] yellow = Directory.GetFiles(@"C:\yellowImgs");
//looping thought the controls in the groupbox which are PictureBoxs
for (int i = 0; i < groupBox1.Controls.Count; i++)
{
// Casting the controls as PictureBox
PictureBox pic = groupBox1.Controls[i] as PictureBox;
// Adding the grey imgs to PictureBoxx
pic.ImageLocation = grey[i];
// Populating the Dictionary
List.Add(Path.GetFileNameWithoutExtension(grey[i])[0], new Tuple<PictureBox, string, string>(pic, grey[i], yellow[i]));
}
}
Теперь после этого мы добавляем текстовое поле в форму, и щелкаем правой кнопкой мыши на его свойствах, затем нажимаем на иконку осветительной лампочки, прокручиваем вниз, пока не увидим двойной щелчок по ней. Теперь обработчик событий создан для нажатия клавиши.
поэтому вы положили этот код:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
// e.keychar returns the key that the user pressed
// So we Don't want the user to press a key we don't have so we perform a check
if (List.ContainsKey(e.KeyChar))
{
// Here we get the first item of the tuple which is the picturebox
// and we assign the yellow img being the third item in the tuple.
List[e.KeyChar].Item1.ImageLocation = List[e.KeyChar].Item3;
}
}
Надеюсь, это сработает.