檢查表格被打開,爲了驗證一個表單是開放的,我們用這種方法和函數能夠從任何形式調用並使用較少的代碼。
示例: 這將在mdiContainer和帶有3個按鈕的面板對象的窗體中使用它,以顯示3個窗口窗體。
進口系統 進口的System.Reflection
Private Sub OpenWindowsForm(ByVal FormName As String)
Dim instForm As Form = Application.OpenForms.OfType(Of Form)().Where(Function(frm) frm.Name = FormName).SingleOrDefault()
If instForm Is Nothing Then
Dim frm As New Form
frm = DirectCast(CreateObjectInstance(FormName), Form)
frm.MdiParent = Me
Me.Panel1.Controls.Add(frm)
Me.Panel1.Tag = frm
frm.Show()
Else
instForm.Select()
instForm.WindowState = FormWindowState.Maximized
instForm.BringToFront()
End If
End Sub
Public Function CreateObjectInstance(ByVal objectName As String) As Object
Dim obj As Object
Try
If objectName.LastIndexOf(".") = -1 Then
objectName = [Assembly].GetEntryAssembly.GetName.Name & "." & objectName
End If
obj = [Assembly].GetEntryAssembly.CreateInstance(objectName)
Catch ex As Exception
obj = Nothing
End Try
Return obj
End Function
如何在點擊事件使用 私人小組btnRegistro_Click(發送者爲對象,E作爲EventArgs的)把手btnRegistro.Click OpenWindowsForm( 「Registro」) 結束子
Private Sub btnBusqueda_Click(sender As Object, e As EventArgs) Handles btnBusqueda.Click
OpenWindowsForm("Busqueda")
End Sub
Private Sub btnCalendario_Click_1(sender As Object, e As EventArgs) Handles btnCalendario.Click
OpenWindowsForm("Calendario")
End Sub
Here is an image of the Sample code
謝謝 我也發現這個代碼,這對我有幫助, '------------ Public Function isOpened(ByVal frm As Form)As Boolean? 昏暗frmCol作爲新的FormCollection() frmCol = Application.OpenForms 昏暗CNT爲整數= 0 對於每個F作爲形成frmCol 如果f.Name = FRM。Name Then Cnt + = 1 Next Return IIf(Cnt> 0,True,False) End Function '------------------------ - 雖然我找到了答案,但我會嘗試你的。 – 2013-03-15 19:22:28
我意識到這是標記爲vb.net,但我偶然發現了這個尋找C#答案。如果其他人做了相同的語法是:Application.OpenForms.OfType().Any()。與VB版本略有不同。 –
2013-10-08 19:55:40
此解決方案不再有效。 – 2017-08-10 19:52:51