委託事件和傳送訊息

2021-09-26 10:27:51 字數 1533 閱讀 2680

需要的引用:using system.runtime.interopservices;

//通過視窗的標題來查詢視窗的控制代碼

[dllimport("user32.dll", entrypoint = "findwindow")]

private static extern intptr findwindow(string lpclassname, string lpwindowname);

//訊息傳送api

[dllimport("user32.dll", entrypoint = "sendmessage")]

private static extern int sendmessage(

intptr hwnd, // 資訊發往的視窗的控制代碼

int msg, // 訊息id

int wparam, // 引數1

int lparam //引數2

);//自定義視窗名稱,例:

public enum windowsname

//自定義要傳送的訊息,例:

public enum msgtype

//傳送訊息的介面

public static void sendmsg(windowsname winname, msgtype msgtype)

}

接收訊息

///重寫窗體的訊息處理函式defwndproc,從中加入自己定義訊息的檢測的處理入口

protected override void defwndproc(ref message m)

}break;

default:

base.defwndproc(ref m);

break;

}}

所謂的委託其實就是觀察者,它會關心某種事件,一旦這種事件被觸發,這個觀察者就會行動。

舉例如下,首先例項化乙個觀察者類ddownloadprogress,將事件跟我們定義的觀察者進行連線,這樣,每當ondownloadprogress事件被觸發,就會去通知這個觀察者,注意我們連線的時候使用的並不是直接的觀察者類例項中的**********_ondownloadprogress()方法,而是乙個委託,並在這個委託中傳遞**********_ondownloadprogress()方法。即我有乙個方法,但我委託你來幫我關聯到事件,因為事件只會直接跟委託打交道,而不是具體的某個方法。

public void startdownload()

public class **********

else}}

}void **********_ondownloadprogress(long total, long current)

);long test = current + 1;

label6.text = test.tostring() + "%";

label6.show();

}else

}

c 委託和委託事件

委託很好用,c 的委託有點函式指標的感覺,它能簡化判斷語句的使用,還能為視窗新增新的事件。weituo.cs using system using system.collections.generic using system.linq using system.text namespace fen...

c 委託事件

1,什麼是委託 委託是什麼?從生活理解就像是你是乙個c 程式設計師,你對c 並不了解,當需要進行c 分析的時候你委託給你的一位懂c 的同事幫你來完成 在c 中,委託的作用是這樣描述的 委託就像乙個函式的指標,在程式執行時可以使用它們來呼叫不同的函式。簡單點說,委託能夠引用函式,通過傳遞位址的機制完成...

初識委託 事件

這個是我剛入行第乙個感興趣的知識點,翻了翻不知道什麼時候記的筆記,覺得有必要把自己學的知識在梳理一遍,有一些點比當時更清晰 在這裡,先將一位大牛的部落格貼出來,有興趣的可以去看看,很詳細的介紹了委託與事件,讀了幾遍受益匪淺 c 中的委託和事件 c 中的委託和事件 續 本文例項是在vs2013下實現的...