2012年11月26日 星期一

[技巧] 判斷是否已開啟視窗

法一 - A、
只能在 父MDI [MAIN_ligoHRsys] 下運作! 當嵌入其它組件時,無法在其下 父MDI 下運算!
        '若表單已存在 則讓他為主要顯示表單
        If l_Frm IsNot Nothing Then

            For i As Integer = 0 To MAIN_ligoHRsys.FindForm().MdiChildren.Length - 1
                If frmText.Equals(MAIN_ligoHRsys.FindForm().MdiChildren(i).Text) Then
                    MAIN_ligoHRsys.FindForm().MdiChildren(i).Tag = 4
                    MAIN_ligoHRsys.FindForm().MdiChildren(i).Activate()
                    DirectCast(MAIN_ligoHRsys.FindForm().MdiChildren(i), Object).MyDataRequery(Nothing)
                End If
            Next
        End If


法一 - B、
當嵌入在任何組件時 在其 父MDI 下運作,必使用 Me.Parent 方可執行!
        '若表單已存在 則讓他為主要顯示表單
        If l_Frm IsNot Nothing Then

            For i As Integer = 0 To Me.Parent.FindForm().MdiChildren.Length - 1
                If frmText.Equals(Me.Parent.FindForm.MdiChildren(i).Text) Then
                    Me.Parent.FindForm.MdiChildren(i).Activate()
                    Me.Parent.FindForm.MdiChildren(i).Tag = 1
                    DirectCast(Me.Parent.FindForm().MdiChildren(i), Object).MyDataRequery(Nothing)
                End If
            Next
        End If


法二、
If My.Application.OpenForms.Item("FormName") IsNot Nothing Then
     'do something here 已經打開
Else
     'do something here 還沒打開
End If


法三、[C#]
            if (Application.OpenForms.OfType<frm力高裝箱明細列印作業>().Count() == 1)
                Application.OpenForms.OfType<frm力高裝箱明細列印作業>().First().Activate();
            else
            {
                frm裝箱明細列印作業 frm = new frm裝箱明細列印作業();
                frm.MdiParent = this.MdiParent;
                frm.Show();
            }   


參考:
[MSDN]Form.ActiveMdiChild 屬性
[MSDN]My.Application.OpenForms 屬性
VB.NET判断一个窗口是否打开的代码
[C#.NET] 如何 使用 WinForm 關閉 視窗 事件
C# WinForm 只允许运行一个实例 ,如果有就激活到前段
WinFrom 判断窗体是否已存在

沒有留言:

張貼留言