簡體   English   中英

如何關閉表單(由代碼創建)

[英]how to close a form (created by code)

我正在通過代碼創建表格。

我正在使用此代碼

Dim frmNew As New Form2
    If frmNew.ShowInTaskbar = True Then
        frmNew.Close()
    End If
    Dim b As Button = DirectCast(sender, Button)
    frmNew.StartPosition = FormStartPosition.CenterScreen
    frmNew.Name = b.Name
    frmNew.Text = b.Text
    Try
        frmNew.Show()
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

我在form2中有一個設計,因此這是im在單擊按鈕后在frmnew聲明中使用的表單,它顯示了我的新表單,但是當我再次單擊該按鈕時,它將在第一個表單中生成一個新表單。 我想在生成新表格之前先關閉表格。

我在我的多用戶LAN CHAT中使用此代碼。

謝謝您的幫助。

要查找當前是否打開了具有相同表單的另一個實例,可以搜索集合Application.OpenForms並檢查它是否包含與您的Form2具有相同名稱的表單。 當然,您應該避免具有相同名稱的兩個不相關的表單。

Dim k = Application.OpenForms.Cast(Of Form).Where(Function (x) x.Name = "yourFormName").SingleOrDefault() 

if k IsNot Nothing Then
   k.Close()
End If

Dim frmNew As Form2
frmNew = new Form2
Dim b As Button = DirectCast(sender, Button)
frmNew.StartPosition = FormStartPosition.CenterScreen
frmNew.Name = b.Name
frmNew.Text = b.Text

Try
    frmNew.Show()
Catch ex As Exception
    MsgBox(ex.Message)
End Try

這種方法避免了使用全局變量來跟蹤先前的實例。

經過快速檢查,我認為搜索代碼可以簡化為

Dim k = Application.OpenForms.Cast(Of Form2).SingleOrDefault() 

這樣也可以避免名稱不相關的表單之間發生名稱沖突

您應該在類內部全局聲明frmNew 這樣的好處是您根本不必擔心關閉其他表單。

因此,全局聲明(任何方法之外):

Dim frmNew as Form2

在您的方法內部:

If frmNew IsNot Nothing Then
    frmNew.Close()
frmNew = New Form2
Dim b As Button = DirectCast(sender, Button)
frmNew.StartPosition = FormStartPosition.CenterScreen
frmNew.Name = b.Name
frmNew.Text = b.Text
Try
    frmNew.Show()
Catch ex As Exception
    MsgBox(ex.Message)
End Try

現在,每次調用該方法時,相同的frmNew將被(重新)初始化,即,您始終只使用一個Form2。

我認為這會起作用

全局聲明變量,內部類

Dim frmNew as New Form2

在您的方法內部:

If frmNew.ShowInTaskbar = True Then
    frmNew.Close()
End If
frmNew = New Form2
Dim b As Button = DirectCast(sender, Button)
frmNew.StartPosition = FormStartPosition.CenterScreen
frmNew.Name = b.Name
frmNew.Text = b.Text
Try
    frmNew.Show()
Catch ex As Exception
    MsgBox(ex.Message)
End Try

暫無
暫無

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

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