Я создал некоторые кнопки в Коде как это.
if (infoLoader.categoriesLoaded)
{
sideBarButtons = new Button[infoLoader.categoriesLength];
for (int i = 0; i < sideBarButtons.Length; i++)
{
sideBarButtons[i] = new Button();
sideBarButtons[i].Content = infoLoader.categories[i].name;
Canvas.SetLeft(sideBarButtons[i], 30);
Canvas.SetTop(sideBarButtons[i], 110 + (40 * i));
sideBarButtons[i].Click += new EventHandler(this.SideButton_Click);
leftSideBar.Children.Add(sideBarButtons[i]);
}
}
С Кнопкой Обработка событий функционируют как это:
private void SideButton_Click(object sender, EventArgs e)
{
// Uhh
Console.WriteLine("The Button has been clicked.");
mainText.Text = infoLoader.games[0].id.ToString() + ", " + infoLoader.games[0].name + ": " + infoLoader.games[0].description;
MainLaunchBtn.Content = "Launch " + infoLoader.games[0].name;
}
И это дает мне ошибку:
Ошибка 1 Никакая перегрузка для 'SideButton_Click' соответствует делегату 'Система. EventHandler'
Я отчасти смущен относительно того, что я пропускаю здесь, и любая справка ценилась бы.Спасибо,
Andy
Событие Button.Click
в WPF (унаследованное от ButtonBase
) не имеет типа EventHandler
- это RoutedEventHandler
. Я несколько удивлен тем сообщением об ошибке, которое вы получаете, но вы должны быть в состоянии изменить ваш код на:
sideBarButtons[i].Click += new RoutedEventHandler(this.SideButton_Click);
или более просто:
sideBarButtons[i].Click += this.SideButton_Click;
Делегатная дисперсия позволит вашей существующей сигнатуре метода быть преобразованной в RoutedEventHandler
, даже если второй параметр имеет тип EventArgs
вместо RoutedEventArgs
.
Вам следует проверить, что у вас правильные директивы using
- убедитесь, что вы действительно создаете кнопки WPF, а не WinForms.
Думаю, вам нужен метод с такой подписью:
private void SideButton_Click(object sender, RoutedEventArgs e)
{
}
and you can add the handler like this:
sideBarButtons[i].Click += SideButton_Click;