Я пытаюсь добавить кнопки в ячейки TableLayoutPanel в WinForm в C # .NET. Как вызвать событие onClick для кнопки вместо события TableLayoutPanel при нажатии на кнопку?
В нашем приложении TableLayoutPanel с несколькими строками и столбцами генерируется во время выполнения (таким образом, динамически в коде, а не через редактор форм Visual Studio) в winform из C # .NET. Ячейки в одном столбце заполнены кнопками. Мы хотели бы добавить событие onClick для этих кнопок. Однако вместо этого вызывается событие onClick TableLayoutPanel.
Я попытался создать статический пример с кнопкой в TableLayoutPanel через редактор froms Visual Studio с обработчиком событий часов на кнопке. Это отлично работает.
Таким образом, вопрос заключается в следующем: как вызвать событие onClick для кнопки вместо события TableLayoutPanel при нажатии на кнопку?
// Code to setup the TableLayoutPanel called overviewTableLayoutPanel
this.overviewTableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 809F));
this.overviewTableLayoutPanel.Location = new System.Drawing.Point(7, 10);
this.overviewTableLayoutPanel.Margin = new System.Windows.Forms.Padding(4);
this.overviewTableLayoutPanel.Name = "overviewTableLayoutPanel";
this.overviewTableLayoutPanel.Size = new System.Drawing.Size(809, 390);
this.overviewTableLayoutPanel.TabIndex = 0;
this.overviewTableLayoutPanel.Paint += new System.Windows.Forms.PaintEventHandler(this.overviewTableLayoutPanel_Paint);
// Code to loop over rows and add buttons and add onClick handlers.
for(int rowNumber = 1; rowNumber++, rowNumber < 10)
{
Button b_batterygraph = new Button();
b_batterygraph.Text = "View Graph";
b_batterygraph.Click += new System.EventHandler(this.graphButton_Click);
// some code to layout buttons
overviewTableLayoutPanel.Controls.Add(l_batterygraph, 4, rowNumber);
overviewTableLayoutPanel.Click += new System.EventHandler(this.table_Click);
}
// OnClick handler Buttons
private void graphButton_Click(object sender, EventArgs e)
{
MessageBox.Show("Button clicked");
}
// OnClick handler TableLayoutPanel
private void table_Click(object sender, EventArgs e)
{
MessageBox.Show("Table clicked");
}
При нажатии на кнопку я ожидаю, что на выходе будет обработчик события кнопки, по которой срабатывает onClick. Однако фактический вывод заключается в том, что обработчик события onClick в TableLayoutPanel сработал.