Избегайте "массового кода"... Если позже вам нужно будет изменить функциональность, вам придется изменить ее для 81 метода. Это не ремонтопригодно.
Итак, что делать?
Во-первых, я бы даже вручную не опускал каждую кнопку в окно. Я бы добавил свой код для каждой кнопки. Так вот, вы не сказали, делаете ли вы WinForms
или WPF
. Итак, я возьму WPF
, потому что он новее и, на мой взгляд, намного лучше.
Программное добавление кнопок
Создайте Window
с Grid
по имени gMain
. Затем привяжите к событию Initialize
окна:
private void handleWindowInitialized(object sender, EventArgs e)
{
// Add 3 rows and 3 columns.
for (int i = 0; i < 3; i++)
{
gMain.ColumnDefinitions.Add(new ColumnDefinition());
gMain.RowDefinitions.Add(new RowDefinition());
}
// Add button to each cell.
for(int row=0; row<3; row++)
for (int column = 0; column < 3; column++)
createButton(row, column);
}
Итак, теперь, когда мы настроили gMain
, давайте посмотрим на метод createButton()
.
Создание кнопки
private void createButton(int row, int column)
{
var button = new Button();
// Add to gMain
gMain.Children.Add(button);
// Place the button in the correct cell.
Grid.SetRow(button, row);
Grid.SetColumn(button, column);
// Tie to the click event.
button.Click += handleButtonClick;
}
Достаточно просто? Мы просто создаем Button
, добавляем его к gMain
, помещаем в правильную ячейку, а затем привязываем к событию Click
. Теперь давайте посмотрим на обработчик события.
Обработчик событий
void handleButtonClick(object sender, RoutedEventArgs e)
{
var button = (Button)sender;
int row = Grid.GetRow(button);
int column = Grid.GetColumn(button);
// Do what ever you would like to do...
}
Обратите внимание, что мы можем указать столбец и строку... из этого вы сможете сделать любую логику, которая вам нужна. Это здорово, потому что тогда вам не понадобится куча разных методов.
person
poy
schedule
06.01.2014
button1.Clicked += YourMethodName;
. Просто взгляните на класс Designer.cs, и вы увидите, как VS их подключает. - person Pierre-Luc Pineault   schedule 06.01.2014