使用delegate作为eventhandler参数

时间:2011-03-03 10:40:17

标签: c# parameters delegates

具有delegate类型的函数参数。 该函数添加一个eventhandler并将该方法作为参数。 如何实现这个目标?

示例:

private void myFunction( Delegate del )
{
...
var b = new Button();
b.Click += new EventHandler( <method delegate refers to should be used> );
}

4 个答案:

答案 0 :(得分:1)

如果您可以将del的类型更改为EventHandler,那么您只需使用以下内容:

b.Click += del;

答案 1 :(得分:1)

目前,这没有任何意义 - 因为它可能是任何类型的代表。

如果传入的委托占用15个参数,您希望发生什么?它怎么称呼?

如果您可以提供有关您要实现的目标的更多信息 - 以及为什么您只想使用Delegate而不是某些特定的委托类型 - 这会有所帮助。

答案 2 :(得分:0)

myFunction的参数应为Action<object, EventArgs>

private void myFunction(Action<object, EventArgs> del)
{
  var b = new Button();
  b.Click += new EventHandler(del);
}

或只是EventHandler

答案 3 :(得分:0)

尝试使用此类代码:

    ...............
    private void btn_Click(object sender, EventArgs e)
    {
        MessageBox.Show("Hello");
    }        

    private void MyFunc(EventHandler Meth)
    {
        button1.Click += Meth;
    }

    private void TestCall()
    {
        MyFunc(btn_Click);
    }
    ............
相关问题