在.NET中,窗體也被定義為一個(gè)類,所以要想調(diào)用窗體中的某個(gè)方法,除了要將要調(diào)用的方法設(shè)為public外,還得創(chuàng)建一個(gè)窗體類的實(shí)例。然而,在下面這種情況下,就是當(dāng)我們打開了窗體1(有了此窗體的一個(gè)實(shí)例),接著打開了窗體2,接下來我們想通過觸發(fā)窗體2中的某個(gè)事件來調(diào)用窗體1中的某個(gè)方法,而這時(shí)我們又不能再創(chuàng)建窗體的新的實(shí)例了,怎么辦?
解決的辦法之一就是利用.NET中提供的System.EventHandler來實(shí)現(xiàn)。方法如下:
建立一個(gè)有兩個(gè)Form的WindowsApplication,在Form1和Form2中各添加一個(gè)Button,下面我們來添加一些代碼。
首先,先在Form2中添加。
在Form2中添加一個(gè)System.EventHandler
publlic event System.EventHandler CallMessage;
在Form2中Button的Click事件中調(diào)用OnClicks
private void button1_Click(object sender, System.EventArgs e)
{
this.CallMessage(sender,e);
}
接下來,在Form1中添加。
在Form1中添加一個(gè)方法,方法的參數(shù)必不可少
public void ShowMessage(object sender, EventArgs e)
{
MessageBox.Show("another form call this method!");
}
在Form1中Button的Click事件中創(chuàng)建一個(gè)Form2的實(shí)例,并加入Form2的CallMessage的實(shí)現(xiàn)方法
private void button1_Click(object sender, System.EventArgs e)
{
Form2 frm=new Form2();
frm.CallMessage+=new EventHandler(ShowMessage);
frm.ShowDialog();
}
好了,我們的目的就達(dá)到了。
寫的是簡(jiǎn)單了些,希望能起到拋磚引玉的作用。