簡體   English   中英

如何在vb.NET中帶到前窗

[英]How to bring to front window in vb.NET

我有一個在后台運行的應用程序,並且在命令中向用戶顯示Windows應用程序。

我的問題是我無法使這些窗口位於所有其他窗口的頂部和頂部(瀏覽器(通常),其他應用程序等)

我使用了TopMost=TrueBringToFront()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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM