1. 程式人生 > >WPF程式設計,C#中對話方塊自動關閉的一種方法。

WPF程式設計,C#中對話方塊自動關閉的一種方法。

MessageBoxTimeout是一個微軟未公開的Windows API函式。實現定時訊息,功能類似於MessageBox。如果使用者不迴應,能定時關閉訊息框。函式由user32.dll匯出,windows2000及以下沒有此函式。

 

 原型:

int MessageBoxTimeoutA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType, WORD wLanguageId, DWORD dwMilliseconds);
 
int MessageBoxTimeoutW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType, WORD wLanguageId, DWORD dwMilliseconds)[1] 

引數: 

hwnd//訊息框的擁有視窗。
lptext//訊息框的內容。
lpCaption//訊息框的標題。
uType//指定一個決定對話方塊的按鈕型別和圖示型別的位標誌集。
wLanguageId//函式擴充套件,一般取0。
dwMilliseconds//訊息框延遲關閉時間,單位:毫秒。

UTYPE取值:

uType:按鈕型別,以下給出常量,可相加。
意思是從需要的每一組中選擇一種功能,將其前面的數值相加,寫在uType的取值處,
這樣,對話方塊就能應用所有選定的功能。

每組只能取一個型別,第五組除外,複製於易語言給出的提示。



第一組(描述對話方塊中顯示按鈕的型別與數目):
    0、#確認鈕;1、#確認取消鈕;2、#放棄重試忽略鈕;3、#取消是否鈕;4、#是否鈕;5、#重試取消鈕
第二組(描述圖示的樣式):
    16、#錯誤圖示; 32、#詢問圖示; 48、#警告圖示; 64、#資訊圖示
第三組(說明哪一個按鈕是預設預設值):
    0、#預設按鈕一; 256、#預設按鈕二; 512、#預設按鈕三; 768、#預設按鈕四
第四組(決定如何等待訊息框結束):
    0、#程式等待; 4096、#系統等待
第五組(其它):
    65536、#位於前臺; 524288、#文字右對齊

返回值:

除了選則第一組的0型別時,返回是1,其它型別都是預設返回是32000。

確認:1

取消:2

中止:3

重試:4

忽略:5

是:6

否:7

 

1、在類的開頭增加如下程式碼:

  [DllImport("user32.dll")]   
  public static extern int MessageBoxTimeoutA(IntPtr hWnd, string msg, string Caps, int type, int Id, int time);   //引用DLL

像這樣:

 

2、 在按鈕事件或者滑鼠事件等其它事件中,加入如下程式碼:

  MessageBoxTimeoutA((IntPtr)0, "3秒後自動關閉", "訊息框", 0, 0, 3000);    // 直接呼叫  3秒後自動關閉 

像這樣: