2011-03-03 37 views
0

具有类型委托的函数参数。 该函数添加一个eventhandler,并期望该方法作为参数。 如何实现这一目标?使用委托作为事件处理参数

例如:

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

回答

1

如果你可以改变的delEventHandler的类型,那么你可以使用以下命令:

b.Click += del; 
1

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

如果委托传入了15个参数,您会希望发生什么?它将如何被称为?

如果您可以提供更多关于您想要实现的功能的信息 - 以及为什么您尝试仅使用Delegate而不是某种特定的委托类型 - 这将有所帮助。

0

给myFunction的参数应该是一个Action<object, EventArgs>

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

或者仅仅是一个EventHandler

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); 
    } 
    ............