簡體   English   中英

MDI子窗體調用,而不是生成

[英]MDI Child form calling, not generation

我有一個MDI表格,里面有3個嵌套的孩子。 到目前為止,它所能做的就是顯示一個新表格。 例如:每次我按菜單按鈕,都會創建新的子窗體(Form1)。 現在,如果我第二次或更多次按下相同的菜單按鈕,則會創建一個新的 Form1,它會出現在上一個Form1上。

我想要的是,每次觸發事件處理程序時(在父窗體上單擊菜單item_click),而不是生成一個完全“新的”子窗體(彈出一個新窗口),它會拉出適當的子窗體附加到觸發器。

我想這就像重用一個對象一樣。

任何幫助將不勝感激。

這是我正在使用的代碼示例:

Private Sub RadMenuItem1_Click(ByVal sender As System.Object, ByVal e As_
System.EventArgs) Handles RadMenuItem1.Click 
Dim NewMDIChild As New InventoryForm1()
'Set the Parent Form of the Child window.'
NewMDIChild.MdiParent = Me
'Display the new form.'
NewMDIChild.Show()

我認為您想要的是表單的類級變量。 就像是 -

'Class level (outside of a method)
Dim NewMDIChild As InventoryForm1

Private Sub RadMenuItem1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles RadMenuItem1.Click

if (NewMDIChild Is Nothing) Then
  NewMDIChild= New InventoryForm1
  NewMDIChild.MdiParent = Me
End if

newFrm.Show()
End Sub

這樣,第一次單擊菜單項時,將創建一個新的InventoryForm1實例,此后,每次單擊菜單項時,都會重新打開原始實例。

請嘗試以下操作(請注意,我已經有一段時間沒有執行VB .Net了,因此語法可能已關閉)

Dim ChildInstances As New Dictionary(Of RadMenuItem, Form)

Private Sub RadMenuItem1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles RadMenuItem1.Click 
    Dim ChildForm As Form

    If Not ChildInstances.TryGetValue(RadMenuItem1, Out ChildForm) Then
        Set ChildForm = New InventoryForm1()
        ChildForm.MdiParent = Me
        ChildInstances.Add(RadMenuItem1, ChildForm)
    Else If ChildForm.Disposed Or Not ChildForm.Visible Then 'The user closed the form
        Set ChildForm = New InventoryForm1()
        ChildForm.MdiParent = Me
        ChildInstances(RadMenuItem1) = ChildForm
    End If

    ChildForm.Show()
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM