2011-06-28 84 views
7

在vb.net中是否有任何類型的msgbox提供消息並在一定時間後自動消失? 還是有沒有任何方法來隱藏msgbox,沒有用戶點擊確定?msgbox在一定時間後自動消失

感謝 Furqan

+0

也許你應該實現自己的消息框,並得到其代碼一段時間後褪色而過(這很容易做到這一點)。我不認爲messagebox有這個功能。 – afaolek

+0

你可以請給我一個提示如何做到這一點? –

+0

我想AJ的回答是。只記得用'.showDialog()' – afaolek

回答

3

不,我不認爲有一個內置的框架控制,會爲你做到這一點。但是,您可以使用自定義表單輕鬆完成此操作,該表單會在Load事件中觸發計時器。然後,當設定的時間已過時,在計時器Elapsed事件中,您可以簡單地關閉表格。

1

使用計時器或某些類型的延遲/睡眠的時間到期後運行

SendKeys.Send("~") 

這同樣也擊中ENTER鍵。

您可能需要通過再次激活msgbox窗口來使其繼續。

+2

您可以在答案中加入一點點,或者包含一些示例代碼? –

+0

Second @Jason .. –

0

我不認爲有這樣的工具。但我認爲你可以按照這個步驟來做到這一點;

  1. 創建一個Form元素的實例,並將其設計爲一個消息框。
  2. 在表單加載事件中,獲取系統時間或使用間隔值啓動計時器。
  3. 此計時器勾選您想要的秒數,然後調用窗體關閉事件。

P.S:如果我錯了,我很抱歉。我只是試圖解決一些問題,也許有更好的方法來解決你的問題。

6

可以使用

的CreateObject( 「WScript.Shell」)。彈出( 「歡迎光臨」,1, 「標題」)

這MSGBOX會自動在1秒鐘後

+0

有沒有什麼辦法讓Intellisense自動完成這個對象的方法?它必須被鑄造成某種類型嗎? – beppe9000

+0

非常簡單!它的工作原理。 – BillDOe

+0

有沒有辦法讓它出現在所有其他窗口之上?或者指定一個職位? – cricardol

0

關閉通過答案的啓發,這就是我來了,在簡單的情況下很好地工作,允許使用所有功能MSGBOX直接:

Imports System.Threading 

Module FormUtils 
    Private sAutoClosed As Boolean 

    Private Sub CloseMsgBoxDelay(ByVal data As Object) 
     System.Threading.Thread.Sleep(CInt(data)) 
     SendKeys.SendWait("~") 
     sAutoClosed = True 
    End Sub 

    Public Function MsgBoxDelayClose(prompt As Object, ByVal delay As Integer, Optional delayedResult As MsgBoxResult = MsgBoxResult.Ok, Optional buttons As MsgBoxStyle = MsgBoxStyle.ApplicationModal, Optional title As Object = Nothing) As MsgBoxResult 
     Dim t As Thread 

     If delay > 0 Then 
      sAutoClosed = False 
      t = New Thread(AddressOf CloseMsgBoxDelay) 
      t.Start(delay) 

      MsgBoxDelayClose = MsgBox(prompt, buttons, title) 
      If sAutoClosed Then 
       MsgBoxDelayClose = delayedResult 
      Else 
       t.Abort() 
      End If 
     Else 
      MsgBoxDelayClose = MsgBox(prompt, buttons, title) 
     End If 

    End Function 
End Module 

PS:通過添加一個計時器到表單

<appSettings> <add key="SendKeys" value="SendInput"/> </appSettings>

0

你可以這樣做:您必須添加這yourApp.config文件。 「定時器來自動關閉後100毫秒 昏暗秒爲整數= 100

'Existing code.... 
Timer1.Start() 
MessageBox.Show("Window Timed Out", "TimeOut") 
Me.Close() 

'Tick Event Code 
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As 
      System.EventArgs) Handles Timer1.Tick 
    seconds = seconds - 1 
    If seconds < 1 Then`  
     Me.Close() 
    End If 
End Sub 
相關問題