Не удается неявно преобразовать тип System.Система EventHandler 'to'.Окна.RoutedEventHandler ' в c#

в приложении Windows phone я хочу добавить кнопку динамически, как показано ниже:

Button btn = new Button();
btn.Content = tb_groupname.Text;
btn.Width = 200;
btn.Height = 200;
btn.Click += new EventHandler(btn_Click);//Click event

но когда я добавить событие click на кнопку, я получаю ниже ошибки:

Cannot implicitly convert type 'System.EventHandler' to 'System.Windows.RoutedEventHandler'

и ниже метод события щелчка кнопки:

private void btn_Click(object sender, EventArgs e)
{
  textbox1.text = "ABC"; // For Example
}

Я не понимаю, почему он получает эту ошибку. Пожалуйста, предложите мне, ожидая ответа. Спасибо.

3 ответов


подпись вашего обработчика событий неверна.

должно быть:

private void btn_Click(object sender, RoutedEventArgs e)

и Click назначение события должно быть изменено на:

btn.Click += new RoutedEventHandler(btn_Click);//Click event

вам нужно использовать RoutedEventHandler (нашли на System.Windows сборка).

в вашем случае вы должны иметь возможность изменить btn.Click += new EventHandler(btn_Click); С btn.Click += new System.Windows.RoutedEventHandler(btn_Click);; а затем измените EventArgs ob btn_Click to RoutedEventArgs.

убедитесь, что вы добавить ссылку System.Windows сборка или она не будет компилироваться!

глядя на MSDN, я получил это:

делегат RoutedEventHandler используется для любого маршрутизируемого события, которое не сообщать информацию о конкретных событиях в данные события. Есть многие такие маршрутизированные события; видные примеры включают щелчок и загрузку.

наиболее примечательная разница между написанием обработчика для маршрутизированного событие в отличие от общего события среды CLR что отправитель события (элемент, в котором находится обработчик прилагается и вызывается) не может рассматриваться как обязательно источник события. Источник сообщается как свойство в событии источник данных.) Разница между отправителем и источником-результат событие, направленное к различным элементам, во время обхода перенаправленное событие через дерево элементов.

ссылка в MSDN.


кнопка щелчок маршрутизируется событие, как упоминалось Патриком Хофманом.

вы даже можете сократить, если не хотите новое событие, просто написав btn.Нажмите кнопку += btn_Click;