В вашем конструкторе создайте и установите локальный Dictionary<string, PictureBox>
. Помните, что формы являются классами, как и любой другой класс C#, и их следует рассматривать как таковые.
Вместо for
, теперь вы можете использовать foreach
и получить доступ к .Key
и .Value
, чтобы получить имена файлов и PictureBox
объектов. Это работает только потому, что у вас есть такие жесткие отношения между PictureBox
и желаемое. Если спаривание изменится или вы хотите использовать одно и то же изображение для двух изображений, вы должны изменить это на List<Tuple<string, PictureBox>>
. На самом деле это может быть лучше всего хотеть справиться с ситуацией.
public class Form1 : Form
{
private Dictionary<string, PictureBox> pictureBoxes;
public Form1()
{
pictureBoxes = new Dictionary<string, PictureBox>()
{
{"Pictures\\green.png", pictureBox_D},
{"Pictures\\blue.png", pictureBox_B},
// Etcetera
}
}
}
Если вы хотите, чтобы петля над ними вы следующее:
foreach(var kvp in pictureBoxes)
{
kvp.Value.Image = new Bitmap(kvp.Key);
}
Это будет работать при условии, что имена были правильно установлены – GETah
OP заявила в первой строке своего вопроса, что PictureBoxes правильно названы –
Учитывая, что параметры вопроса были «У меня много PictureBoxes с именами picturebox_D1, picturebox_D2 ... D30 ». Я бы сказал, что это логично, что их называют так. –