VB.net将窗口置于前面

dev*_*__c 10 vb.net winforms

我需要在VB.net 2010中设置一个窗口来显示屏幕前面的代码.

我想要实现的是显示紧急警报类型,它是一种形式,由于某些原因我没有使用消息框.

有人建议使用以下代码,但这不起作用:

  Private Sub frmMessage_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Me.BringToFront()
    End Sub
Run Code Online (Sandbox Code Playgroud)

小智 20

只需将窗口的属性TopMost设置为其他窗口的顶部就足够了.

Form.TopMost = True

  • 只要意图是始终将表单放在首位,这就很棒了. (2认同)
  • @Matt - 我只是讨厌那些认为他们的问题有理由在所有应用程序之上的应用程序。话虽如此,如果我在核电站工作,我希望反应堆熔毁消息始终处于最重要的位置。应用程序紧急和用户紧急可能相同,也可能不同。 (2认同)

sea*_*alz 11

尝试

me.Activate()
Run Code Online (Sandbox Code Playgroud)

这个outta做的伎俩

编辑:我用谷歌搜索我的答案备份

我的情况

EDIT2:

似乎有一些事情有效.以上以及

''depending on setup
Me.Show
Form2.Show()
Run Code Online (Sandbox Code Playgroud)

Form2.ShowDialog()
Run Code Online (Sandbox Code Playgroud)

Form2.Visible = True
Run Code Online (Sandbox Code Playgroud)

  • 它肯定无法保证工作,Windows阻止您将窗口推入用户的脸部.请注意闪烁的任务栏按钮. (6认同)

Bri*_*ham 7

<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function FindWindow( _
     ByVal lpClassName As String, _
     ByVal lpWindowName As String) As IntPtr
End Function

<DllImport("user32.dll")> _
Private Shared Function SetForegroundWindow(ByVal hWnd As IntPtr) As <MarshalAs(UnmanagedType.Bool)> Boolean
End Function
Run Code Online (Sandbox Code Playgroud)

现在,取出要带到前面的窗口的名称,然后执行以下操作:

string name = "Untitled - Notepad";
IntPtr ptr = FindWindow(null, name);
SetForegroundWindow(ptr);
Run Code Online (Sandbox Code Playgroud)

这会将窗口带到屏幕的正面.

  • 因为我的解决方案适用于所有窗口,而不仅仅是.NET窗体.如果表单最小化,管理方式不会,它也可以工作. (4认同)