Обработчик кнопок в codebehind C# WPF

Я создал некоторые кнопки в Коде как это.

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

1
задан Andrew 18 July 2010 в 16:04
поделиться

2 ответа

Событие 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.

2
ответ дан 2 September 2019 в 22:57
поделиться

Думаю, вам нужен метод с такой подписью:

    private void SideButton_Click(object sender, RoutedEventArgs e)
    {

    }

and you can add the handler like this:

sideBarButtons[i].Click += SideButton_Click;
0
ответ дан 2 September 2019 в 22:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: