我在WinForm中调用本机Win32 API。
在我进一步解释之前,我应该解释一下我想要做什么。我正在进行API调用以检索一些数据,然后在WinForm上显示它。但是,我正在尝试复制本机Toast通知(但请注意,这是一个桌面exe @当下)。
我可以通过AnimateWindow检索数据并在表单上显示它。
但是我需要显示表单5秒。我使用了 Thread.Sleep(5000),我知道这不是显示表单的正确方法。
我还需要在表单上有一个关闭按钮(没有可见的表格边框)只是一个" X" png在PictureBox中。所以我希望PictureBox点击事件我可以关闭表单。
但是,由于我使用了 Thread.Sleep(5000),我无法点击该表单!即使我将鼠标悬停在表单上,光标也会切换到等待光标。
有什么方法可以完成那个关闭按钮吗?
如果需要,我会发布代码。
答案 0 :(得分:0)
您可以使用Async / Await with Task.Delay()在暂停期间保持表单响应:
Private Async Sub AnimateWindowSub()
' ... { animate window call here } ...
Await Task.Delay(5000)
Me.Close()
End Sub
Private Sub pb_X_Close_Click(sender As Object, e As EventArgs) Handles pb_X_Close.Click
Me.Close()
End Sub
Async / Await组合允许消息泵仍然工作并捕获PictureBox点击事件,尽管暂停,然后关闭。