推薦:淺談不同映射模式下的直線輸出的效果問題在做打印預覽時:發現有趣的現象。 1:打印預覽時寬度設置為0.1mm的線與設置為0.2mm的線顯示效果一樣,無區別。 打印機輸出正常。 2:打印預覽時:相同寬度的線有些顯示有些不顯示。 打印機輸出正常。 仔細查看了一下,實際上是映射模式下的顯示問題,鑒于映
DOTNET事件處理的步驟與實現
第一步:定義一個合適的委托
例:
| 以下為引用的內容: delegate void MoveEventHandler(Object Sender,MoveEventArgs e) |
注意:DotNet框架中的標準委托的定義如下:
| 以下為引用的內容: Public delegate void EventHabdler(Object Sender,EventArgs e) |
參數說明:
(1)Sender:表示消息的發送方;
(2)EventArgs:默認的消息處理類(不含附加數據)
(3)強烈建議使用標準的委托定義事件
第二步:定義一個合適的消息
由于標準的EventArgs類不包含附加數據,可繼承此類,使該類包含與特定時間相關的信息,
| 以下為引用的內容: 如: Public class MoveEventArgs { Public int newPosition; Public MoveEventArgs(int newPosition) { this.newPosition = newPosition } } |
第三步:發送方聲明事件并設置激發事件的代碼
聲明事件:Public event 委托類型與事件標識
必須使用Public聲明事件,否則接收方就不能登記事件處理器,激發一個事件的代碼如下:
| 以下為引用的內容: if (事件標識 != null) { MoveEventArgs args = new MoveEventArgs(value1); } |
事件標識(this,args)(注意:次事件為dotnet標準事件)
另:建議直接使用標準系統委托 EventHandler
發送消息 MyEvent(this.args);
Public event EventHandler MyEvent;
聲明一個事件變量
第四步:接收方登記事件處理器
事件處理器也是一種委托,將接收方要完成的功能加入到事件處理器,實現委托與事件的掛鉤,一旦接收方收到發送的消息后,將立即執行該方法,實現功能。
Sender s1 = new Sender();聲明一個發送方實例
s1.事件標識 = new定義的委托(要實現的功能代碼)
將事件與要實現的功能掛鉤。
第五步:等待事件的發生
注意:接收方只能處理登記完成了事件處理器后的事件,對于在事件處理器之前就發生的事件,接收方并不能處理。
分享:怎樣在VC中實現淡入淡出的啟動畫面一日心血來潮,想給啟動畫面來個淡入淡出,于是去谷歌(google)查了半天,無果。但知道了AnimiateWindow 這個函數。好吧 ,讓我們開始吧。首先,請在需要淡入淡出 窗口 的cpp文件或者stdafx.h加入下列代碼(注意要加在#include前面哦,否則沒有作用哦)。 以下
新聞熱點
疑難解答
圖片精選