Я попытался динамически добавлять панели и их обработчики событий, используя приведенный ниже код.Динамически добавлять элементы управления и обработчики событий C#
Однако он не работает (вызывает событие при нажатии), хотя он похож на многие из доступных ответов.
Пожалуйста, помогите, если это возможно.
int items = 0;
private void Form1_Load(object sender, EventArgs e)
{
ArrayList al = new ArrayList();
foreach (KnownColor knowColor in Enum.GetValues(typeof(KnownColor)))
{
Color color = Color.FromKnownColor(knowColor);
al.Add(color.Name);
}
foreach (string i in al)
{
addListItem(i);
}
}
public void addListItem(string item)
{
Panel pnlItem = new Panel();
pnlItem.Location = new Point(0, items * 25);
pnlItem.Name = "pnl" + item;
pnlItem.Size = new Size(250, 25);
pnlList.Controls.Add(pnlItem);
Label lbl = new Label();
lbl.Text = item;
pnlItem.Controls.Add(lbl);
pnlItem.MouseClick += new MouseEventHandler(pnlItem_MouseClick);
items++;
}
void pnlItem_MouseClick(object sender, MouseEventArgs e)
{
MessageBox.Show("panel was clicked");
}
Нет. Это нормально. Они могут содержаться внутри других элементов управления. – ispiro
, так как я могу заставить это работать, потому что все выглядит отлично, но это не вызывает событие. – thewikus
Вы щелкаете по самой панели или этикетке внутри панели? – Icemanind