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