c # как работать с событиями для мульти динамически создаваемых кнопок - PullRequest
0 голосов
/ 05 сентября 2010

Я создал WinForm и добавил к нему динамические кнопки, как я могу справиться с его событиями

public static void Notify()
{

    var line = 3;

    Form fm = new Form();
    fm.Text = "Hello!";
    fm.ShowInTaskbar = false;
    fm.ShowIcon = false;
    fm.MinimizeBox = false;
    fm.MaximizeBox = false;
    fm.FormBorderStyle = FormBorderStyle.FixedToolWindow;
    fm.TopMost = true;
    fm.ClientSize = new Size(150, 75 * line/2);
    Rectangle workingArea = Screen.PrimaryScreen.WorkingArea;
    int left = workingArea.Width - fm.Width-5;
    int top = workingArea.Height - fm.Height-4;
    fm.Location = new Point(left, top);
    fm.StartPosition = FormStartPosition.Manual;

    var buttomArray = new Button[line];

    for (int i = 0; i < line; i++)
    {
        buttomArray[i] = new Button();
        buttomArray[i].Text = "Button " + (i + 1);
        buttomArray[i].Location = new Point(10,30*(i+1) - 16);
        buttomArray[i].Size = new Size(130,25);
        fm.Controls.AddRange(new Control[] { buttomArray[i] });
    }

    fm.Show();
}

Я хочу иметь возможность делать разные вещи, когда нажимаю на другую кнопку (возможно,Я могу использовать «имя» в качестве идентификатора?)

ура

Ответы [ 2 ]

4 голосов
/ 05 сентября 2010

Просто назначьте обработчик Click :

for (int i = 0; i < 10; i++)
{
    var btn = new Button();
    btn.Text = "Button " + i;
    btn.Location = new Point(10, 30 * (i + 1) - 16);
    btn.Click += (sender, args) =>
    {
        // sender is the instance of the button that was clicked
        MessageBox.Show(((Button)sender).Text + " was clicked");
    };
    Controls.Add(btn);
}
3 голосов
/ 05 сентября 2010

Подписаться на событие Button.Click.Прикрепите данные, которые вы хотите использовать в обработчике кликов, к свойству Tag, пока вы находитесь в цикле создания.

for (int i = 0; i < line; i++) 
    { 
        buttomArray[i] = new Button(); 
        buttomArray[i].Tag=i;
    .....

В обработчике кликов отправителем будет кнопка (вы можете привести кit) и тег будет содержать ваше значение.

Button btn=(Button)sender;
int value=(int)btn.Tag;

Свойство Tag принимает любой тип.Поэтому вы можете прикрепить к нему любое значение.

...