Возможно передать данные EventArgs, не создавая производный класс?

Я немного смущен. Я знаю, что могу создать класс, полученный из EventArgs, чтобы иметь пользовательские данные о событии. Но я могу использовать базовый класс EventArgs так или иначе? Как щелчок кнопкой мыши, в методе подписчика, всегда существует параметр "EventArgs e". Я могу создать так или иначе метод, который передаст данные этот путь, я подразумеваю, что они будут переданы в основном Eventargs?

12
задан Thomas 21 December 2009 в 21:03
поделиться

2 ответа

Можно ли просто использовать необработанный тип данных 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);
3
ответ дан 2 December 2019 в 06:26
поделиться

Нет. Базовый класс EventArgs - это просто способ разрешить некоторые стандартные типы делегатов событий. В конечном итоге, чтобы передать данные обработчику, вам нужно создать подкласс EventArgs. Вместо этого вы можете использовать аргумент отправителя, но это действительно должен быть объект, который инициировал событие.

6
ответ дан 2 December 2019 в 06:26
поделиться
Другие вопросы по тегам:

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