国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

利用自定義事件實(shí)現(xiàn)不同窗體間的通訊 -- C#篇

2024-07-21 02:18:12
字體:
供稿:網(wǎng)友
c# 中的“事件”是當(dāng)對象滿足一定條件,發(fā)生某些事情時,類向該類的客戶提供通知的一種方法。使用事件,擁有該事件的對象不必知道需要通知誰,一旦滿足了某個條件,將自動調(diào)用該事件,正確通知每個需要通知的對象。通過使用事件,提高了程序的模塊化程度。

要在程序中使用自定義事件,需按以下步驟進(jìn)行:

1、聲明事件
要在類內(nèi)聲明事件,首先必須聲明該事件的委托類型:
public delegate void selectionchangedeventhandler(object sender,
selectionchangedeventargs e);

說明:由于本示例程序需在事件中傳遞數(shù)據(jù),因此定義了eventargs的派生類selectionchangedeventargs。
public class selectionchangedeventargs : eventargs
{
private string m_selection;

//本屬性用于傳遞事件數(shù)據(jù)
public string selection
{
get { return m_selection; }
}

public selectionchangedeventargs(string selection)
{
m_selection = selection;
}
}

委托類型定義傳遞給處理該事件的方法的一組參數(shù)。多個事件可共享相同的委托類型,因此僅當(dāng)尚未聲明任何合適的委托類型時才需要執(zhí)行該步驟。

接下來,聲明事件本身:
public event selectionchangedeventhandler selectionchanged;


2、調(diào)用事件
如果沒有任何客戶將委托與該事件掛鉤,該字段將為空;否則該字段引用應(yīng)在調(diào)用該事件時調(diào)用的委托。因此,調(diào)用事件時通常先檢查是否為空,然后再調(diào)用事件。
public class form2 : system.windows.forms.form
{
... ...

public event selectionchangedeventhandler selectionchanged;

... ...

private void combobox1_selectedindexchanged(object sender, system.eventargs e)
{
if (selectionchanged != null)
{
selectionchangedeventargs e = new selectionchangedeventargs(combobox1.text);
selectionchanged(this, e);
}
}
}

3、與事件掛鉤
為了開始接收事件調(diào)用,客戶代碼先創(chuàng)建事件類型的委托,該委托引用應(yīng)從事件調(diào)用的方法。然后它使用 += 將該委托寫到事件可能連接到的其他任何委托上。
public class form1 : system.windows.forms.form
{
... ...

private form2 m_frm2;

... ...

public form1()
{
... ...

m_frm2 = new form2();

//與事件掛鉤
m_frm2.selectionchanged += new selectionchangedeventhandler(frm2_selectionchanged);
}

... ...

private void button1_click(object sender, system.eventargs e)
{
m_frm2.showdialog();
}

private void frm2_selectionchanged(object sender, selectionchangedeventargs e)
{
//獲取事件傳遞過來的數(shù)據(jù)
textbox1.text = e.selection;
}
}

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 大洼县| 霍州市| 巴林右旗| 察雅县| 大宁县| 建昌县| 邢台市| 安塞县| 新绛县| 广饶县| 抚顺县| 简阳市| 东兰县| 广平县| 五莲县| 霍林郭勒市| 滕州市| 历史| 温泉县| 阜新市| 同心县| 莱芜市| 许昌市| 鄂温| 安阳市| 类乌齐县| 凌源市| 房山区| 霍邱县| 长汀县| 商河县| 定陶县| 涡阳县| 陕西省| 浪卡子县| 乌审旗| 婺源县| 汉川市| 尉氏县| 鸡东县| 全南县|