ispirato dalle risposte, questo è quello che mi è venuto con, lavorando bene in casi semplici, che permette di utilizzare tutte le caratteristiche MsgBox direttamente:
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: È necessario aggiungere questo al file di yourApp.config:
<appSettings> <add key="SendKeys" value="SendInput"/> </appSettings>
fonte
2016-12-04 11:52:48
Forse si dovrebbe implementare una propria casella messaggi e ottenere il suo codice a svanire via dopo qualche tempo (è facile per farlo). Non credo che le messagebox abbiano questa caratteristica. – afaolek
potresti darmi un suggerimento su come farlo? –
Credo che la risposta di AJ lo faccia.Ricordati di mostrare il modulo con '.showDialog()' – afaolek