Events 它叫什么?我想处理这个问题;事件“;CLR DLL生成的

Events 它叫什么?我想处理这个问题;事件“;CLR DLL生成的,events,dll,clr,Events,Dll,Clr,因此,我是一名VisualBasic6开发人员,正在转向CLR,需要一个真正的新手问题的答案 在Visual Basic 6中,如果您有一个ActiveX控件,则可以引用该控件,然后有一条基本上是这样的语句: 公共WithEvents YourControl(强调“WithEvents”关键字) 在VisualBasic中,您将拥有一组用于该控件的事件处理程序函数。您只需从下拉列表中选择它们,就会生成一个空的处理程序 我正在寻找VS2008(Winform)中的等效版本。如何在VisualStu

因此,我是一名VisualBasic6开发人员,正在转向CLR,需要一个真正的新手问题的答案

在Visual Basic 6中,如果您有一个ActiveX控件,则可以引用该控件,然后有一条基本上是这样的语句:

公共WithEvents YourControl(强调“WithEvents”关键字)

在VisualBasic中,您将拥有一组用于该控件的事件处理程序函数。您只需从下拉列表中选择它们,就会生成一个空的处理程序

我正在寻找VS2008(Winform)中的等效版本。如何在VisualStudio2008 IDE中访问该功能?我在Winform项目中引用了CLR DLL项目。我只需要知道如何访问CLR DLL的函数/类


谢谢

活动广播员级别:

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在事件广播程序类中类似:

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是类似的

答案取决于您使用的语言

如果您使用的是Visual Basic.NET

语法实际上是相同的。在所有.NET语言中,事件都只是
委托
,它基本上是可以指向零个或多个具有相同签名的函数的函数指针

在VB.NET中处理事件时,
WithEvents
关键字不是绝对必要的,但它确实为开发人员提供了使用传统VB样式事件处理程序的能力(设计师也是这样做的)。就像你熟悉的那样,可以这样做

Private WithEvents YourControl as Control

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

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

// to attach, this goes somewhere in code

//...
YourControl.Click += ClickFunction;
//...
要处理对象上没有
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 WithEvents YourControl as Control

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

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

// to attach, this goes somewhere in code

//...
YourControl.Click += ClickFunction;
//...

答案取决于你使用的语言

如果您使用的是Visual Basic.NET

语法实际上是相同的。在所有.NET语言中,事件都只是
委托
,它基本上是可以指向零个或多个具有相同签名的函数的函数指针

在VB.NET中处理事件时,
WithEvents
关键字不是绝对必要的,但它确实为开发人员提供了使用传统VB样式事件处理程序的能力(设计师也是这样做的)。就像你熟悉的那样,可以这样做

Private WithEvents YourControl as Control

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

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

// to attach, this goes somewhere in code

//...
YourControl.Click += ClickFunction;
//...
要处理对象上没有
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 WithEvents YourControl as Control

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

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

// to attach, this goes somewhere in code

//...
YourControl.Click += ClickFunction;
//...

你的意思是“C#”而不是“CLR”?你的意思是“C#”而不是“CLR”?虽然事件声明和调用的语法类似,但添加委托却不是。AddHandler。。。地址。。。看起来和我很像,只是更详细。尽管如此,他还是要求“CLR”;也许这意味着ldftn。。。callvirt实例类::添加_MyEvent(类System.EventHandler)?;)虽然事件声明和调用的语法类似,但添加委托不是。AddHandler。。。地址。。。看起来和我很像,只是更详细。尽管如此,他还是要求“CLR”;也许这意味着ldftn。。。callvirt实例类::添加_MyEvent(类System.EventHandler)?;)