У меня есть матрица кнопок, созданная в главной сетке в окне, а также созданная для каждого из них событие. У меня также есть целочисленная матрица, которая содержит некоторые свойства каждой кнопки (например, int a [1,2] является свойством для кнопки btn [1,2]). Я планирую создать что-то вроде лабиринта, на котором вы можете переходить только от одной кнопки к другой, прыгая в рыцаря (из шахмат). Я не знаю, как найти координаты кнопки нажатой, чтобы я мог изменить положение текущей кнопки.C# WPF-массив кнопок, координаты кнопок
Button[,] btn = new Button[25, 25];
for (x = 5; x <= n; x++)
{
for (y = 5; y <= n; y++)
{
btn[x, y] = new Button();
left += 72;
btn[x,y].Margin =new Thickness(left,top,0,0);
btn[x,y].Height = 32;
btn[x,y].Width = 32;
btn[x, y].Click += new RoutedEventHandler(btn_Click);
if (a[x, y] == 2)
btn[x,y].Background = Brushes.Red;
else
btn[x,y].Background = Brushes.Blue;
main.Children.Add(btn[x, y]);
}
left = 0;
top += 72;
}
}
private void btn_Click(object sender, RoutedEventArgs e)
{
}
в btn_Click() вы можете сделать это: кнопка btn = (кнопка) отправителя; – Dilshod
@Dilshod True, но для того, чтобы быть в безопасности 'Button btn = sender as Button;', если отправитель не является кнопкой, вместо генерируемого исключения будет возвращен 'null'. –
Уверен, что вы правы. Или вы можете сначала проверить: if (отправитель - Button) {// затем бросить} – Dilshod