我正在從我的 VB.net Windows 表單應用程式打開一個 PDF:
Try
Process.Start(fileName)
Catch e As System.ComponentModel.Win32Exception 'no PDF viewer installed, use browser
Dim startinfo As New ProcessStartInfo
startinfo.FileName = "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
startinfo.Arguments = String.Format(fileName)
startinfo.UseShellExecute = False
Process.Start(startinfo)
End Try
我希望我的申請表在打開 PDF 后回到前面。我已經嘗試了所有這些,但都不起作用:
Me.Activate()
Me.BringToFront()
Me.TopMost = True
Me.TopMost = False
僅使用 Me.TopMost=True 實際上有效,但我不想強制我的應用程式位于所有其他視窗之前。我只想在打開 PDF 后把它放在前面。一旦我添加命令 Me.TopMost = False 來重置它,它就不再起作用了。
uj5u.com熱心網友回復:
我不知道您是否可以使用特定的 API 來完成您的要求,但從我的角度來看,您已經找到了解決方案:
Me.TopMost = True
Me.TopMost = False
您必須在 PDF 打開操作結束后立即使用這兩行。
這是使用以下代碼的示例:
Imports System.Threading
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.BackColor = Color.Green
Label1.Text = "Start"
End Sub
Private Sub PdfOperation_Simulation(sender As Object, e As MouseEventArgs) Handles Label1.MouseDown
Me.BackColor = Color.Red
Label1.Text = "Wait..."
Me.Refresh()
Thread.Sleep(3000) 'Pdf opening... I manually bring to front VisualStudio
Me.TopMost = True
Me.TopMost = False
Me.BackColor = Color.Green
Label1.Text = "Finish"
End Sub
End Class
輸出:

更新
它對我不起作用。我已將我的代碼簡化為 Dim startinfo As New ProcessStartInfo startinfo.FileName ="C:\README.TXT" startinfo.UseShellExecute = True Process.Start(startinfo) Me.TopMost = True Me.TopMost = False 這會打開記事本,但我的應用程式沒有出現在前面。
這是因為顯示操作的記事本視窗需要一些時間。根據您的需要,您可以在之前使用 Thread.Sleep 簡單地等待幾秒鐘Me.TopMost = False或執行以下操作:
Dim startinfo As New ProcessStartInfo
startinfo.FileName = "C:\README.TXT"
startinfo.UseShellExecute = True
Process.Start(startinfo)
Dim t As New Thread(
Sub()
Thread.Sleep(1000)' One second
Me.Invoke(Sub() MoveOnTop())
End Sub
)
t.Start()
其中MoveOnTop是
Private Sub MoveOnTop()
Me.TopMost = True
Me.TopMost = False
End Sub
使用執行緒,您的應用程式不會被Sleep操作凍結。
只是另一種選擇。您是否考慮過將記事本的 WindowStyle 設定為最小化?下面是一個例子:
Dim startinfo As New ProcessStartInfo("Notepad")
startinfo.Arguments = "C:\README.TXT"
startinfo.UseShellExecute = True
startinfo.WindowStyle = ProcessWindowStyle.Minimized
Process.Start(startinfo)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/402852.html
標籤:
