9

msgboxメッセージを表示し、一定時間後に自動的に消える vb.netのタイプはありますか? msgboxまたは、ユーザーが [OK] をクリックせずに、を非表示にする方法はありますか?

4

9 に答える 9

10

使用できます

CreateObject("WScript.Shell").Popup("ようこそ", 1, "タイトル")

このメッセージボックスは 1 秒後に自動的に閉じます

于 2014-09-18T07:24:46.143 に答える
3

いいえ、これを行う組み込みのフレームワーク コントロールはないと思います。ただし、イベントでタイマーを起動するカスタム作成フォームを使用すると、これを簡単に行うことができますLoad。次に、設定した時間が経過しElapsedたら、タイマー イベントでフォームを閉じるだけです。

于 2011-06-28T16:36:24.427 に答える
2

Linendra Soni の回答は適切ですが、Windows や Excel の新しいバージョンでは機能する場合と機能しない場合があります。

これは、新しいバージョンでは完全に機能します。

Function MessageTimeOut(sMessage As String, sTitle As String, iSeconds As Integer) As Boolean
    Dim Shell
    Set Shell = CreateObject("WScript.Shell")
    Shell.Run "mshta.exe vbscript:close(CreateObject(""WScript.shell"").Popup(""" & sMessage & """," & iSeconds & ",""" & sTitle & """))"
    MessageTimeOut = True
End Function

次のように使用します。

Sub Example()
    Dim chk As Boolean
    chk = MessageTimeOut("Hello!", "Example Sub", 1) 'if chk returned FALSE that means the function was not executed successfully
End Sub

また

Sub Example()
    Call MessageTimeOut("Hello!", "Example Sub", 1) 'you don't need to get the output of the function
End Sub

出力:

ここに画像の説明を入力

于 2020-01-09T00:01:34.353 に答える
1

タイマーまたは何らかのタイプの遅延/スリープを使用し、時間切れ後に実行します

SendKeys.Send("~")

これは ENTER キーを押した場合と同じです。

msgbox ウィンドウを再度アクティブにして、処理を続行させる必要がある場合があります。

于 2013-11-15T20:38:05.927 に答える
1

答えに触発されて、これは私が来たもので、単純なケースでうまく機能し、すべての 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>

于 2016-12-04T11:52:48.187 に答える
0

そのようなツールはないと思います。しかし、次の手順に従ってそれを行うことができると思います。

  1. Form 要素のインスタンスを作成し、メッセージ ボックスのようにデザインします。
  2. Form load イベントで、システム時刻を取得するか、間隔値でタイマーを開始します。
  3. このタイマーは、必要な秒数を刻み、フォームの閉じるイベントを呼び出します。

PS : 間違っていたらすみません。私は何かを解決しようとしているだけです。あなたの問題を解決するためのより良い方法があるかもしれません。

于 2013-11-15T20:48:41.327 に答える
-1

これが方法です

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

于 2011-06-28T17:22:48.743 に答える