Как это называется? Я хочу обработать "события", которые производит DLL CLR - PullRequest
1 голос
/ 26 августа 2009

Итак, я разработчик Visual Basic 6 и перехожу к CLR, и мне нужен ответ на реальный новый вопрос.

В Visual Basic 6, если у вас был элемент управления ActiveX, вы могли бы сослаться на этот элемент управления, а затем получить утверждение, по сути:

Public WithEvents YourControl (Акцент на ключевом слове "WithEvents")

В результате в Visual Basic у вас будет набор функций-обработчиков событий для этого элемента управления. Вы можете просто выбрать их из выпадающего списка, и будет сгенерирован пустой обработчик.

Я ищу эквивалент в VS2008 (Winform). Как получить доступ к этим функциям в Visual Studio 2008 IDE? У меня есть проект CLR DLL, указанный в моем проекте Winform. Мне просто нужно знать, как получить доступ к функциям / классам этой библиотеки CLR.

Спасибо!

Ответы [ 2 ]

1 голос
/ 26 августа 2009

Ответ будет зависеть от языка, который вы используете.

Если вы используете Visual Basic .NET

Синтаксис на самом деле тот же. Во всех языках .NET события - это просто delegates, которые в основном являются указателями на функции, которые могут указывать на ноль или более функций с одинаковыми сигнатурами.

Ключевое слово WithEvents не является абсолютно необходимым для обработки событий в VB.NET, но оно предоставляет разработчику возможность использовать устаревшие обработчики событий в стиле VB (и именно так дизайнер это тоже делает). Это можно сделать так же, как вы знакомы, как это

Private WithEvents YourControl as Control

Private Sub ClickFunction(ByVal sender as Object, ByVal e as EventArgs) Handles YourControl.Click
    'do things
End Sub

Чтобы обработать событие на объекте без ключевого слова WithEvents, используйте AddHandler

AddHandler YourControl.Click, AddressOf ClickFunction

Private Sub ClickFunction(ByVal sender as Object, ByVal e as EventArgs)
    'do things
End Sub

Если вы заинтересованы в просмотре событий в выпадающем списке в верхней части редактора, все, что вам нужно, - это переменная, которая должна быть объявлена ​​с ключевым словом WithEvents. Просто найдите интересующую вас переменную в меню слева, тогда события должны появиться в меню справа.

Если вы используете C # .NET

В C # таких функций нет. Все обработчики событий должны быть прикреплены явно, как это

private Control YourControl;

private void ClickFunction(Object sender, EventArgs e)
{
    // do stuff
}

// to attach, this goes somewhere in code

//...
YourControl.Click += ClickFunction;
//...
0 голосов
/ 26 августа 2009

В классе вещателей:

public event EventHandler MyEvent;

void OnMyEvent()
{
    if (MyEvent != null)
        MyEvent(this, EventArgs.Empty);
}

В классе приемника событий:

obj.MyEvent += new EventHandler(obj_MyEvent);

void obj_MyEvent(object sender, EventArgs e)
{
    // Do something as a result of the event here
}

Синтаксис в C #, VB.NET похож

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...