C# 我可以将值传递给事件处理函数吗?
我想使用带有事件列表的属性框中的参数的函数。visual studio右侧的偶数列表框只允许使用object sender和eventargs e的某些函数,而不显示带有参数的自定义函数。这是常规行为还是应该查找错误?编写EventArgs的后代 e、 gC# 我可以将值传递给事件处理函数吗?,c#,.net,visual-studio-2010,C#,.net,Visual Studio 2010,我想使用带有事件列表的属性框中的参数的函数。visual studio右侧的偶数列表框只允许使用object sender和eventargs e的某些函数,而不显示带有参数的自定义函数。这是常规行为还是应该查找错误?编写EventArgs的后代 e、 g 现在,它是EventHandler的一个OK参数,当您编写一个e时,它将具有MyValue和MyNumber属性。按钮。Click是按原样定义的,无法更改它。但是, yourButton.Click += delegate { YourBut
现在,它是EventHandler的一个OK参数,当您编写一个e时,它将具有MyValue和MyNumber属性。
按钮。Click是按原样定义的,无法更改它。但是,
yourButton.Click += delegate { YourButton_click(1); }
将执行此任务。您只能在与事件声明(委托签名)相对应的事件上注册处理程序
如果要使用预定义事件而不创建自己的事件,则必须遵循事件处理程序签名在.Net中使用事件的正确方法如下:
- 使用名称以
EventHandler
- 此具有的委托正好有两个参数,
sender
和e
sender
必须是object
类型,并且应该包含对引发事件的类实例的引用e
必须是从EventArgs
继承的类型(通常是EventArgs
本身)e
是包含事件数据的实例
您不能期望找到任何其他事件处理程序签名,它总是(objectsender,XXXEventArgs e)
请注意,当您引发事件且不需要传递事件数据时,应使用EventArgs.Empty
public delegate void MyEventHandler(object sender, EventArgs e);
public event MyEventHandler MyEvent;
public void OnMyEvent()
{
if (this.MyEvent != null)
{
this.MyEvent(this, EventArgs.Empty);
}
}
您只需使用按钮的CommandArgument
yourButton.Click+=新建事件处理程序(yourButton\u Click);
yourButton.CommandArgument=“您的参数”;
在事件处理程序方法中,执行以下操作:
字符串yourParameters=(发送者为按钮).CommandArgument.ToString()
希望这有帮助。当您绑定到事件时,它是否工作?您可以将自定义事件(从EventArgs继承)对象中的参数设置为e。
public delegate void MyEventHandler(object sender, EventArgs e);
public event MyEventHandler MyEvent;
public void OnMyEvent()
{
if (this.MyEvent != null)
{
this.MyEvent(this, EventArgs.Empty);
}
}