Я работаю над формой Win. Один из моих кнопок на события мыши должны принять настроенный аргумент (heritated от EventArgs):Проблема для правильного создания события, включая настраиваемые EventArgs
private void B_Say_Click(object sender, Custom_EventArgs e) //instead of EventArgs e
{
....
}
(Причина в том, что этот метод может быть вызван, когда я нажал на кнопку, но и в различных других контекстах ., где мне нужно получить пользовательские данные (которые я хочу передать через Custom_EventArgs)
конечно, я включил производный класс:
public class Custom_EventArgs : EventArgs
{
public string say_string;
}
компилятор генерирует эту ошибку для линии:
this.B_Say.Click += new System.EventHandler(this.B_Say_Click);
Ошибка 3 Нет перегрузки для 'B_Say_Click' соответствует делегату 'System.EventHandler'
Если я пытаюсь использовать общую версию EventHandler:
this.B_Say.Click += new System.EventHandler<Custom_EventArgs>(this.B_Say_Click);
я получаю: Ошибка 3 Не может неявно преобразовать тип 'System.EventHandler' в 'System.EventHandler'
Я полагаю, что подпись связанных событий кнопок в классе System.Windows.Forms.Button принимает только EventHandler ,
Поскольку Custom_EventArgs происходит от EvenArgs, я полагаю, что мы можем эксплицировать листинг Custom_EventArgs на Eventargs для решения проблемы, но я не уверен, как это сделать?
Если литье не является решением, есть ли другое решение?
Thx заранее.
Вы не можете заменить подпись EventArgs своей собственной. Класс Button не знал, как его сгенерировать, или заполнить поле say_string. Это делает его немного бессмысленным. Вы можете использовать свойство тега Button, а затем, в случае, направить объект отправителя на кнопку, а затем изучить свойство Tag. Не очень, но непонятно, почему ваша кнопка должна делать больше работы, чем просто предоставить механизм щелчка. – LarsTech