2016-12-04 2 views
2

Мне нужно использовать один обработчик событий для нескольких кнопок. Я сгенерировал эти кнопки через цикл while в соответствии с запросом базы данных. Я создал единственный методC# динамически genarate кнопка для одного обработчика событий

void MyButtonClick(object sender, EventArgs e) 
{ 
} 

Я новичок в C#. Как связать события каждой кнопки с одним обработчиком.

код для создания кнопок:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    {   
     try 
     { 
      MydbConnection db = new MydbConnection(); 
      MySqlConnection con = db.connection(); 
      MySqlCommand cmd = new MySqlCommand(); 

      cmd.CommandText = "select * from categories where online = 1"; 
      cmd.Connection = con; 

      MySqlDataReader rd; 
      con.Open(); 
      rd = cmd.ExecuteReader(); 

      int i = 1; 
      while (rd.Read()) 
      { 
       Button btn = new Button(); 
       btn.Name = "btn-" + i.ToString(); 
       btn.Tag = i; 
       btn.Text = rd.GetString(2).ToString(); 

       btn.Height = 60; 
       btn.Width = 100; 
       btn.Location = new Point(900, 60 * i + 10); 

       this.Controls.Add(btn); 
       i++; 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 
} 

ответ

0

Добро пожаловать на SO. Вы можете добавить это прямо перед this.Controls.Add(btn);

btn.Click += MyButtonClick; 
+0

Как установить 'btn.name' в' MyButtonClick() '.. pls – user3722956

+0

Вы не можете установить имя. потому что он только для чтения. Я подозреваю, что вам нужно получить имя, узнать, какая кнопка нажата? Если это так, вы можете наложить объект 'sender' следующим образом:' var btn = (Button) sender' и не забудьте проверить нуль. – Emad

+1

спасибо, что помогли мне .. – user3722956

0

Вы должны установить все свои свойства CLICK в тот же обработчик событий:

btn.Click += new EventHandler(MyButtonClick);

Это должно сделать так, чтобы в любое время нажмите любую из кнопки, MyButtonClick() - это событие, которое запускается. Конечно, если вам необходимо выяснить, какая кнопка была нажата, то вам необходимо проверить параметр sender в случае, когда «я» один из числа значений, которые назначены на кнопку в цикле:

(if sender == btn-i) then .... 
Смежные вопросы