Я немного смущен. Я знаю, что могу создать класс, полученный из EventArgs, чтобы иметь пользовательские данные о событии. Но я могу использовать базовый класс EventArgs так или иначе? Как щелчок кнопкой мыши, в методе подписчика, всегда существует параметр "EventArgs e". Я могу создать так или иначе метод, который передаст данные этот путь, я подразумеваю, что они будут переданы в основном Eventargs?
Можно ли просто использовать необработанный тип данных EventArgs
? Абсолютно. Согласно MSDN:
Этот класс не содержит данных о событиях; он используется событиями, которые не передают информацию о состоянии в обработчик событий при возникновении события. Если обработчику событий требуется информация о состоянии, приложение должно унаследовать класс от этого класса для хранения данных.
http://msdn.microsoft.com/en-us/library/system.eventargs.aspx
private event TestEventEventHandler TestEvent;
private delegate void TestEventEventHandler(EventArgs e);
private void button1_Click(object sender, EventArgs e)
{
TestEvent += TestEventHandler;
if (TestEvent != null)
{
TestEvent(new EventArgs());
}
}
private void TestEventHandler(EventArgs e)
{
System.Diagnostics.Trace.WriteLine("hi");
}
Должен ты когда-нибудь это делал? Я не думаю, что по какой-то причине. Если вы хотите создавать свои собственные клики, вы можете просто создать экземпляр MouseEventArgs
самостоятельно:
MouseEventArgs m = new MouseEventArgs(System.Windows.Forms.MouseButtons.Left, 1, 42, 42, 1);
Нет. Базовый класс EventArgs - это просто способ разрешить некоторые стандартные типы делегатов событий. В конечном итоге, чтобы передать данные обработчику, вам нужно создать подкласс EventArgs. Вместо этого вы можете использовать аргумент отправителя, но это действительно должен быть объект, который инициировал событие.