2013-02-21 63 views
0

我想這一點:公共自定義事件在用戶控件

public partial class ucTest : UserControl 
{ 
... 
SomeEvent { MessageBox.Show("Inner Call") } 
} 


public partial class frmTest: Form 
{ 
... 
SomeEvent += OuterEventInstance; 
... 
void OuterEventInstance(object sender, EventArgs e) 
{ MessageBox.Show("Inner Call") } 
... 
} 

我如何可以在包含該用戶控件的實例的形式是可用的(和可擴展)用戶控件定義的公共事件?

+0

你是什麼意思的 「擴張」? – 2013-02-21 09:06:48

+0

我的意思是這個'SomeEvent + = OuterEventInstance;'這樣我就可以在用戶控件中的按鈕被點擊時運行一些代碼。 – 2013-02-21 09:11:19

+0

你需要解釋更多關於你的問題。我認爲你的答案是[我對你的其他問題的回答](http://stackoverflow.com/a/14956801/1174942)。您的用戶控件的「MyClikc」事件可以像其他事件一樣以其容器形式訪問。 – 2013-02-21 09:14:10

回答

2

事情是這樣的:

public partial class ucTest : UserControl 
{ 
    public event EventHandler SomeEvent; 

    private void OnSomeEvent() 
    { 
     EventHandler handler = SomeEvent; 
     if(handler != null) 
      handler(this, EventArgs.Empty); 
    } 

} 


public partial class frmTest: Form 
{ 
    public frmTest() 
    { 
     ucTest uc = new ucTest(); 
     uc.SomeEvent += OuterEventInstance; 
    } 

    //... 

    void OuterEventInstance(object sender, EventArgs e) 
    { 
     MessageBox.Show("Inner Call") 
     //... 
    } 
} 
+0

我不知道爲什麼這不起作用。 – 2013-02-21 09:13:04

+0

@MahdiTahsildari你是什麼意思的「不起作用」?在StackOverflow「不起作用」不起作用! :-) – 2013-02-21 09:19:15

+0

@MahdiTahsildari你有編譯器錯誤嗎?或者你沒有看到用戶控件事件中定義的事件?或者你會得到一個例外?請澄清。 – 2013-02-21 09:20:26

相關問題