Вопрос: msgbox автоматически исчезает через определенное время


Есть ли какой-либо тип msgbox в vb.net, который дает сообщение и автоматически исчезает через определенное время? Или есть ли какой-либо метод скрыть msgbox, без нажатия кнопки ОК?

благодаря Фуркан


7


источник


Ответы:


Вы можете использовать

CreateObject («WScript.Shell»). Popup («Добро пожаловать», 1, «Название»)

этот msgbox закроется автоматически через 1 секунду


6



Нет, я не думаю, что есть встроенный фреймворк, который сделает это за вас. Однако вы можете легко сделать это с помощью специальной формы, которая запускает таймер в Load мероприятие. Затем, когда заданное количество времени прошло, в таймере Elapsed событие, вы можете просто закрыть форму.


3



Используйте таймер или некоторый тип задержки / сна и по истечении времени прогона

SendKeys.Send("~")

Это то же самое касается нажатия клавиши ENTER.

Возможно, вам придется активировать его, снова активировав окно msgbox.


1



Я не думаю, что есть такой инструмент. Но я думаю, вы можете сделать это, следуя этим шагам;

  1. Создайте экземпляр элемента Form и создайте его как почтовый ящик.
  2. В событии загрузки формы получите системное время или запустите таймер с интервалом.
  3. Этот таймер отметит, сколько секунд вы хотите, затем вызовите событие «Закрыть окно».

P.S: Если я ошибаюсь, извините. Я только пытаюсь что-то решить, возможно, есть лучший способ решить вашу проблему.


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: Вы должны добавить это в файл yourApp.config:

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


0



Вы можете сделать это, добавив таймер в вашу форму.     «Таймер для автоклинирования через 100 мс      Dim seconds As Integer = 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

0



Это способ

http://www.vbforums.com/showpost.php?p=3745046&postcount=5


-1