返回首页

我需要最小化系统托盘中的图标,在同一器件的应用目标形式的形式传输数据。这已取得了代表。现在,我想隐藏()时的目标表单的scource处于闲置状态,并显示()发送数据时预定目标的Form.Hide /显示呼叫挂起。有任何想法如何做到这一点,请的人。

回答

评论会员:克莱夫・波特 时间:2012/02/06
我modfied了代码
Delegate Sub ShowHideForm_Delegate(ByVal pform As Form, _

                                   ByVal pshow As Boolean)

 

Private Sub ShowHideForm_ThreadSafe(ByVal pform As Form, _

                                    ByVal pshow As Boolean)

If pform.InvokeRequired Then

     Dim MyDelegate As New ShowHideForm_Delegate(AddressOf ShowHideForm_ThreadSafe)

        pform.Invoke(MyDelegate, New Object() {[pform], [pshow]})

    Else

        If (pshow) Then

            pform.Show()

        Else

            pform.Hide()

        End If

    End If

End Sub

这工作得很好,虽然有一个鼠标点击事件对目标的问题
形式(pform)

再次感谢)
评论会员:游客 时间:2012/02/06
SwingSwis:问题是不明确的和无关的信息,而一些相关的信息可能丢失。基本上,所有的呼叫到任何UI方法/属性应只从UI线程。所以,如果你想引起显示或隐藏的形式,从任何线程安全,你应该做的:{C}而不是调用等待在UI线程事件循环的委托加工,可以使用的非bloking的BeginInvoke将立即返回,当委托实例,并调用其参数被张贴到UI线程队列,看到我的引用是不是真的需要检查InvokeRequired:此代码将工作,如果只调用方法(在此条件下的第一个分支)。从UI线程调用时,调用非分支(直接调用)将只是更有效。还有另一种情况时,只需要调用的一部分:当你是肯定的,那上面的代码将只能从非UI线程调用。再次,它会从任何线程中工作,但是这将是事倍功半,如果从(下同)UI线程。称为你不能调用任何有关从非UI线程到UI。相反,你需要使用该方法的Invoke或BeginInvokeSystem.Windows.Threading.Dispatcher(窗体或WPF)或System.Windows.Forms.Control的(形式)。在我过去的答案,你会发现它是如何工作的详细解释和代码样本:imgsrc=,{A1}见多线程也引用:{A2}{A3}]mdash;水杨酸
SAKryukov
评论会员:{的C2} 时间:2012/02/06