所以我是一名Visual Basic 6开发人员,转而使用CLR,需要回答一个真正的新问题。
在Visual Basic 6中,如果你有一个ActiveX控件,你可以引用该控件,然后有一个语句基本上说:
Public WithEvents YourControl(强调“WithEvents”关键字)
在Visual Basic中,您将拥有一组用于该控件的事件处理函数。您只需从下拉列表中选择它们,就会生成一个空的处理程序。
我正在寻找与VS2008(Winform)相同的东西。如何在Visual Studio 2008 IDE中访问该功能?我在Winform项目中引用了CLR DLL项目。我只需要知道如何访问该CLR DLL的函数/类。
谢谢!
答案 0 :(得分:1)
答案取决于您使用的语言。
如果您使用的是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;
//...
答案 1 :(得分:0)
在事件播音员课程中:
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类似