Динамическое создание компонентов и подписка их на события - C#
Формулировка задачи:
Добрый день!
Я начинающий программист, пытаюсь разобраться с созданием массивов control-ов и ихних событий. У меня есть три tableLayoutPanel, я в цыкле поместил в каждую ячейку лейблы и создал для них события MouseEnter и MouseLeave. Программа запускается и работает, но при наведении курсора на label выдаёт ошибку. Вот мой код:
Подскажите, что здесь не так.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace loto
{
public partial class Form1 : Form
{
int i, value;
Label[] label = new Label[75];
Random rand = new Random();
public Form1()
{
InitializeComponent();
for (i = 0; i < label.Length; i++)
{
value = rand.Next(1, 100);
label[i] = new Label();
label[i].Name = "label" + (i + 1).ToString();
label[i].Margin = new Padding(3, 3, 2, 2);
label[i].TabIndex = i;
label[i].Dock = DockStyle.Fill;
label[i].BackColor = SystemColors.Control;
label[i].Font = new Font("MS Reference Sans Serif", 12, FontStyle.Bold);
label[i].TextAlign = ContentAlignment.MiddleCenter;
if (value < 10) label[i].Text = "0" + value.ToString();
else label[i].Text = value.ToString();
label[i].MouseEnter += new EventHandler((s, args) => { label[i].BackColor = Color.LightGray; });
label[i].MouseLeave += new EventHandler((s, args) => { label[i].BackColor = SystemColors.Control; });
}
for (i = 0; i < 25; i++) tableLayoutPanel1.Controls.Add(label[i]);
for (i = 25; i < 50; i++) tableLayoutPanel2.Controls.Add(label[i]);
for (i = 50; i < 75; i++) tableLayoutPanel3.Controls.Add(label[i]);
}
}
}Решение задачи: «Динамическое создание компонентов и подписка их на события»
textual
Листинг программы
label[i].MouseEnter += new EventHandler((s, args) => { (s as Label).BackColor = Color.LightGray; });
label[i].MouseLeave += new EventHandler((s, args) => { (s as Label).BackColor = SystemColors.Control; });