在程式中怎麼實現事件。要明白事件,首先要知道什麼是委託。在c#中委託允許開發人員
將乙個物件中的方法傳遞給另乙個能呼叫該方法的類的某個物件。比如:可以將類ac中的乙個方法add[前
提是這個方法以被包含在某個委託中了]傳遞給另乙個類wms。此時類wms就能呼叫類ac中的add了。當然不
管你是以什麼方式實現方法的傳遞了,可以是靜態的,也可以是例項化的。。要實現乙個委託,需要按照
這樣的不揍:
a:申明委託物件。注意:引數一定要和你想要包含的方法的引數形式一致。
public delegate void neweggdelegate(string values)
b:定義方法
class neweggclass1
public viod neweggmethod2(string values){}
....}
c:建立乙個委託物件此時將這個方法包含在該委託物件中
class neweggclass2
}d:再呼叫包含在委託中的方法。
class neweggclass3
}class test
}而事件是具有特定引數的委託物件而已。格式象:public delegate void neweggeventhandler(object
sender,neweggeventargs e);
sender表示觸發該事件的物件,e表示在事件處理函式裡可以被使用的一些資料象neweggeventargs可以繼
承自evenetargs類。當然有的時候不需要派生自己的類想一些gui的程式,裡面有很多縣城的事件使用如
:mouseeventargs。否則必須從eventargs類派生。
現在舉例如下:
using system;
//步驟1:宣告委託物件
public delegate void myhandler1(object sender,myeventargs e);
public delegate void myhandler2(object sender,myeventargs e);
//步驟2:建立事件處理函式的方法
class a",
e.m_id);
} public void onhandler2(object sender,myeventargs e)",
e.m_id);
} //步驟3:建立委託物件,並事件處理函式包含在其中同時設定好將要觸發事件的物件
public a(b b)
} //步驟4:通過委託物件(也就是觸發事件)來呼叫被包含的方法
class b
} public void fireevent2(myeventargs e)
} }
public class myeventargs eventargs
public class driver
}
C 的事件處理機制
在以往的關於事件處理的程式中,我們更多的是採用一種迴圈等待的方式,即為了檢測某個事件是否發生,迴圈的檢測某個變數是否發生變化但這樣會占用大量的資源。而c 的事件處理機制提供了一種非常好的解決方案。程式不再不停的檢查裝置,而是等待訊息的到來,然後交給程式來處理他它。這樣的話,作業系統中只是傻瓜式的將訊...
C 的事件處理機制
今天,花費了一下午事件,終於算是了解了事件的處理機制。在c 中,對於事件的應用其實可以有四個步驟。1.在事件發行者中定義乙個事件 2.在事件發行者觸發事件 3.在事件訂閱者中處理事件的處理程式 4.向事件發行者訂閱事件.在c 中事件是經常被用到的一種概念。如果要實現乙個事件,首先要有兩個物件,乙個是...
C 的事件處理機制
在以往的關於事件處理的程式中,我們更多的是採用一種迴圈等待的方式,即為了檢測某個事件是否發生,迴圈的檢測某個變數是否發生變化但這樣會占用大量的資源。而c 的事件處理機制提供了一種非常好的解決方案。程式不再不停的檢查裝置,而是等待訊息的到來,然後交給程式來處理他它。這樣的話,作業系統中只是傻瓜式的將訊...