2014-02-12 16 views
0

Можно ли добавить событие нажатия кнопки? Я хочу добавить элементы управления динамически, но я не привязываю события к моим элементам управления.программно добавить кнопку в winforms?

this.buttonDeneme = new System.Windows.Forms.Button(); 
    this.buttonDeneme.Location = new System.Drawing.Point(150, 90); 
    this.buttonDeneme.Name = "button1"; 
    this.buttonDeneme.Size = new System.Drawing.Size(122, 23); 
    this.buttonDeneme.TabIndex = 0; 
    this.buttonDeneme.Text = "FileUpload"; 
    this.buttonDeneme.UseVisualStyleBackColor = true; 
    this.buttonDeneme.Click += ???? 

ответ

2

@dotTutorial ответ будет работать, но люди Лота все еще испытывают трудности с выражением Linq и лямбда, так что если вы не понимаете, это очень простой способ, чтобы написать это:

this.buttonDeneme.Click += new EventHandler(MyCustomClickHandler); 

void MyCustomClickHandler(object sender, EventArgs e) 
{ 
    // do whatever you want here 
} 

но создания нескольких кнопку обычно потому, что они не будут делать то же самое, поэтому вы можете установить this.buttonDeneme.Tag на какой-то идентификатор. я предпочитаю использовать строку там.

, то в событии click вы можете получить это значение и знать, что делать. здесь скорректированная версия с используемым тегом:

this.buttonDeneme.Tag = "SearchBook"; 
this.buttonDeneme.Click += new EventHandler(MyCustomClickHandler); 

void MyCustomClickHandler(object sender, EventArgs e) 
{ 
    // for button created above the value when 
    // the click is called will be "SearchBook" 
    string sTag = ((Button)sender).Tag.ToString(); 

    if(sTag == "SearchBook") 
    { 
     // do stuff for search book 
    } 
    else if(sTag == "blablabla") 
    { 
     // do other stuff 
    } 
} 
1

Простейшей альтернативой могло бы быть использование выражения лямбда.

this.buttonDeneme.Click += ((s, e) => { 
// The code that handles a click event 
}); 

's' будет объектом отправителя и 'e' eventargs.

Смежные вопросы