如果你想要把對話方塊自動關閉要怎麼做呢,我們可以利用timer來控制達到自動關閉效果

Step1:開啟vs2008 新增一個vb 智慧型裝置專案,在表單上產一個按鍵 test

Step2:撰寫Form1程式碼


Imports ...System.Runtime.InteropServices
Public Class Form1

<DllImport(
"coredll.dll", EntryPoint:=
"FindWindow", CharSet:=CharSet.Auto)> _

Private Shared Function FindWindow() Shared Function FindWindow(ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
End Function 
<DllImport(
"coredll.dll", CharSet:=CharSet.Auto)> _

Public Shared Function PostMessage() Shared Function PostMessage(ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Integer
End Function
Public Const WM_CLOSE
As Integer = &H10

Private Sub StartTimer() Sub StartTimer()
Dim timer As New Timer
'3秒啓動
timer.Interval = 3000
AddHandler timer.Tick, AddressOf Timer_Tick
timer.Enabled = True
End Sub 
Private Sub CloseMessageBox() Sub CloseMessageBox()
'依MessageBox的標題,找出MessageBox的視窗
Dim value As IntPtr = FindWindow(Nothing, "TEST")
If value <> IntPtr.Zero Then
'找到則關閉MessageBox視窗
PostMessage(value, WM_CLOSE, IntPtr.Zero, IntPtr.Zero)
End If
End Sub 
Private Sub Timer_Tick() Sub Timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)
CType(sender, Timer).Enabled = False
CloseMessageBox()
End Sub 
Private Sub Button1_Click() Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
StartTimer()
MessageBox.Show("Auto Close MessageBox", "TEST")
End Sub
End Class
Step3:將滑鼠移到功能表按下偵錯\開始偵錯部署應用程式

Step4:按下test 鍵,這時候看一下是否有出現訊息對話方塊,等待三秒就消失不見

Step5: 源碼下載