Как сделать кнопку динамически?
Я делаю "список" кнопок, как меню в форме, и я пытаюсь сделать это из таблицы в базе данных, я делаю это так:
foreach (Catalogos catalogo in catalogos)
{
SimpleButton sb = new SimpleButton();
sb.Text = catalogo.Nombre;
sb.Click += catalogo.Evento;
LayoutControlItem item = new LayoutControlItem();
item.TextVisible = false;
item.Control = sb;
lcg.Add(item);
}
Моя проблема в sb.Click += catalogo.Evento
линия, как я могу сделать событие динамически
2 ответа
Решение
Используйте лямбда / анонимный метод
SimpleButton sb = new SimpleButton();
sb.Text = catalogo.Nombre;
sb.Click += (sender, evntArgs) => {
//some dynamic mouse click handler here.
};
Опция 1
Создать SimpleButton_Click
метод в вашей форме
private void SimpleButton_Click(object sender, EventArgs e)
{
//using (SimpleButton)sender you can find which botton is clicked
}
затем в вашем цикле назначьте этот метод Click
событие:
sb.Click += new System.EventHandler(this.SimpleButton_Click);
вариант 2
назначьте делегат / лямбда-выражение для события следующим образом:
//instead of sender and e, usually you should use different names
//because usually you are running this code in an event handler
//that has sender and e parameters itself
sb.Click += (object senderObject, EventArgs eventArgs) =>
{
//using (SimpleButton)sender you can find which botton is clicked
};