消息框最真实
本文关键字:真实 消息 | 更新日期: 2023-09-27 17:56:48
有没有办法使默认消息框(MessageBox.Show()
)TopMost true,即使消息框失去焦点,它也保持在顶部?我不想创建自定义的。有没有办法通过使用SetWindowHook或类似的东西来做到这一点?我已经研究了很多,但我找到的所有解决方案都不起作用。有人可以帮助我如何在 VB.net 或 C# 中执行此操作吗?
最简单的方法是 p/调用 MessageBox
函数并传递 MB_SYSTEMMODAL
标志。
我明白了。这将在所有打开的窗口顶部显示一个消息框,无论它们是否有最顶层选项,消息框始终出现在前面。
Public Enum MessageBoxResult As UInteger
Ok = 1
Cancel
Abort
Retry
Ignore
Yes
No
Close
Help
TryAgain
ContinueOn
Timeout = 32000
End Enum
Public Enum MessageBoxOptions As UInteger
SystemModal = &H1000
NoFocus = &H8000
SetForeground = &H10000
Topmost = &H40000
End Enum
<DllImport("user32.dll", EntryPoint:="MessageBoxW", SetLastError:=True, Charset:=CharSet.Unicode)> _
Public Shared Function MessageBox(hwnd As IntPtr, _
<MarshalAs(UnmanagedType.LPTStr)> lpText As String, _
<MarshalAs(UnmanagedType.LPTStr)> lpCaption As String, _
<MarshalAs(UnmanagedType.U4)> uType As MessageBoxOptions) As <MarshalAs(UnmanagedType.U4)> MessageBoxResult
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
MessageBox(IntPtr.Zero, TextBox2.Text, TextBox1.Text, MessageBoxButtons.OK Or MessageBoxOptions.SystemModal + MessageBoxOptions.Topmost + MessageBoxOptions.SetForeground + MessageBoxIcon.Information)
End Sub
End Class