[英]How to bring to front window in vb.NET
我有一個在后台運行的應用程序,並且在命令中向用戶顯示Windows應用程序。
我的問題是我無法使這些窗口位於所有其他窗口的頂部和頂部(瀏覽器(通常),其他應用程序等)
我使用了TopMost=True
, BringToFront()
, Form.Activate()
, Form.ShowDialog()
等,但它仍然對我不起作用。
我設法將它放在所有其他應用程序的前面,但僅限於第一個窗口。 例:我在后台運行該應用程序,第一個窗口顯示在所有其他窗口的頂部(這些窗口基本上僅在重置后顯示在頂部)。用戶完成此窗口並關閉它。 一段時間后,應該在所有窗口的頂部顯示第二個窗口,但不在所有窗口的頂部。
我還能嘗試什么? 您是否知道什么可以“阻止”我的應用程序,從而使其不在頂部?
Public Function ChooseDir() As String
Dim sRes As String = ""
Using folders As frmFolderBrowser = New frmFolderBrowser()
folders.ShowDialog()
sRes = folders.StrPathValue
End Using
ChooseDir = sRes
End Function
Private Sub frmFolderBrowser_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
If DialogResult.OK = FolderBrowserDialog.ShowDialog() Then
strPath = FolderBrowserDialog.SelectedPath
End If
Me.Close()
End Sub
這應該為您工作:
MakeTopMostWindow(Me.Handle.ToInt64, True)
Application.DoEvents()
MakeTopMostWindow(Me.Handle.ToInt64, False)
在其他地方定義的地方
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Integer, ByVal hWndInsertAfter As Integer, ByVal x As Integer, ByVal y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags As Integer) As Integer
Friend Sub MakeTopMostWindow(ByVal hwnd As Int64, ByVal MakeTopMostFlag As Boolean)
Dim HWND_TOPMOST As Integer
If MakeTopMostFlag Then
HWND_TOPMOST = -1
Else
HWND_TOPMOST = -2
End If
Dim SWP_NOMOVE As Integer = &H2
Dim SWP_NOSIZE As Integer = &H1
Dim TOPMOST_FLAGS As Integer = SWP_NOMOVE Or SWP_NOSIZE
Try
SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS)
Catch ex As Exception
End Try
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.