2014-05-12 3 views
0

Я создал 8 * 8 матрицу кнопки для игры с маневрами. Мне нужно установить для них событие click и имя. Как я могу это сделать? Помоги пожалуйста. Также я использовал холст для создания сетки. Это лучший способ сделать это?как установить событие и имя клика в массив динамически созданной кнопки

private void makeGrid() 
    { 
     int firstlp,secondlp,position=50; 
     for (int i = 0; i < 400; i=i+50) 
     { 
      for (secondlp = 0; secondlp < 400; secondlp = secondlp + 50) 
      { 
       Button lbl = new Button() 
       { 

        Content = "", 
        HorizontalAlignment = HorizontalAlignment.Right, 
        VerticalAlignment = VerticalAlignment.Center, 
        HorizontalContentAlignment = HorizontalAlignment.Center, 
        VerticalContentAlignment = VerticalAlignment.Center, 
        Height = 50, 
        Width = 50, 
       }; 
       jereMy.Children.Add(lbl); 
       Canvas.SetLeft(lbl, secondlp + 50); 
       Canvas.SetRight(lbl, secondlp + 50); 
       Canvas.SetTop(lbl, position); 
      } 
      position = position + 50; 
     } 

    } 

ответ

1

Вы можете добавить EventHandler и имя при создании кнопки:

lbl.Click += button_Click; 
lbl.Name = string.Format("btn_{0}_{1}",i,secondlp); 

EventHandler должен выглядеть следующим образом:

private void button_Click (object sender, RoutedEventArgs e) 
{ 
    // Handle the click event 
} 

И я бы предложил использовать вместо UniformGrid от Canvas. Вы можете использовать свойства Rows и Columns, чтобы сделать UnformGrid 8x8. В WPF много панелей макета, я думаю, что большинство из них соответствуют вашим потребностям лучше, чем Canvas. (например, Grid или вложенные StackPanel с)

1

Вы можете добавить регистрацию событий, как показано ниже.

lbl.Click+= OnButtonClick(sender,e); 


private void OnButtonClick(object sender, EventArgs e) 
{ 
    //To do. 
} 
Смежные вопросы