Я создаю несколько коробок с изображениями динамически, затем присваиваю следующее:
// class variable
public String PaintLabel;
// private void Form2_Load(object sender, EventArgs e)
//begin loop
this.PaintLabel = serialno;
Shapes[i].Paint += new PaintEventHandler(ctl_Paint);
// end loop
// my event override
private void ctl_Paint(object sender, PaintEventArgs e)
{
Control tmp = (Control)sender;
using (Font myFont = new Font("Arial", 9, FontStyle.Bold))
{
e.Graphics.DrawString(this.PaintLabel, myFont, Brushes.LightYellow, new Point(62, 2));
} // using (Font myFont = new Font("Arial", 10))
} // private void ctl_Paint(object sender, EventArgs e)
Предполагается создать коробки с рисунками и написать разные серийные номера на каждой из них.Но в итоге пишется последний серийный номер, найденный на всех графических полях
РЕДАКТИРОВАТЬ:
Хорошо, ваше решение для меня очень продвинуто.Но я пытался это понять.
Я добавил ваш кусок кода в мой.
Затем изменил массив моего графического блока следующим образом
MyControl[] Shapes = new MyControl[Num_Picbox];
В моем циклеЗатем я сделал следующее:
Shapes[i].SerialNumber = serialno;
Shapes[i].Paint += new PaintEventHandler(ctl_Paint);
Но когда я компилирую и запускаю код, он не рисует серийный номер на картиночной коробке.
РАЗРЕШЕНИЕ:
Спасибо за всетвоя помощь.Я изменил ваш
var PaintLabels = new Dictionary<Control, string>();
на
Dictionary<Control, string> PaintLabels = new Dictionary<Control, string>();
Что бы разобраться, событие рисования не смогло увидеть локальную переменную.