我有一个vb.net应用程序,我想成为a)可见和b)最活跃的时候,将activewindow设置为我的要求 - 这部分我已经覆盖了罚款。循环背景工作
我希望能够做的是使用BackgroundWorker的主动监控这种在一个连续的循环 - 我再次报道了这关的罚款。
我遇到的问题是,当我选择组合框时,由于bgw的干扰,我无法进行选择 - 就像当我点击组合框来显示列表时,bgw似乎几乎做了一个从关闭列表的组合框中单击鼠标。
任何帮助将不胜感激。
这里是我的代码:
Private Delegate Sub progressDelegate()
Private Sub frmApp_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.bgwActiveWindow.RunWorkerAsync()
End Sub
Private Sub bgwActiveWindow_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bgwActiveWindow.DoWork
Dim CheckWindow As progressDelegate
CheckWindow = New progressDelegate(AddressOf SetAppTopMost)
Me.Invoke(CheckWindow)
System.Threading.Thread.Sleep(100)
End Sub
Private Sub SetAppTopMost()
Dim bol As Boolean
If getActiveWindowTitle.IndexOf("Microsoft Outlook") <> -1 Or _
getActiveWindowTitle.IndexOf(My.Settings.AppName) <> -1 Then
bol = True
Else
bol = False
End If
Me.Visible = bol
Me.TopMost = bol
End Sub
Private Sub bgwActiveWindow_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bgwActiveWindow.RunWorkerCompleted
bgwActiveWindow.RunWorkerAsync()
End Sub
这很容易找出你自己的。简化代码。删除后台工作人员。你很可能会发现设置'Visible'或'TopMost'属性正在关闭下拉列表。 –
如果删除了背景工作者,则没有适当的过程来主动观看活动窗口选择,即只有当Outlook是活动窗口时才应显示该应用程序,否则应设置为隐藏而不是最上层。 – user3664128
我的评论是关于你调试你自己的代码。这不是一个解决方案。 –