Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我可以将值传递给事件处理函数吗?_C#_.net_Visual Studio 2010 - Fatal编程技术网

C# 我可以将值传递给事件处理函数吗?

C# 我可以将值传递给事件处理函数吗?,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

我想使用带有事件列表的属性框中的参数的函数。visual studio右侧的偶数列表框只允许使用object sender和eventargs e的某些函数,而不显示带有参数的自定义函数。这是常规行为还是应该查找错误?

编写EventArgs的后代

e、 g


现在,它是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);
    }
}