Vb.net 将表单重置为原始状态

Vb.net 将表单重置为原始状态,vb.net,winforms,reset,Vb.net,Winforms,Reset,我想用vb.net重置我的表单,我会尝试下面的代码,但表单关闭,无法打开新表单 Private Sub resert_button_Click(sender As Object, e As EventArgs) Handles resert_button.Click Dim client = New client_entry client.Show() Me.Close() End Sub 可以有多种方法来处理这个问题,但我的方法就像调用显示的表

我想用vb.net重置我的表单,我会尝试下面的代码,但表单关闭,无法打开新表单

Private Sub resert_button_Click(sender As Object, e As EventArgs) Handles resert_button.Click
        Dim client = New client_entry
        client.Show()
        Me.Close()
End Sub

可以有多种方法来处理这个问题,但我的方法就像调用显示的表单,即使在我加载所需数据的地方,我也会调用这个事件

Private Sub Me_Shown(sender As Object, e As EventArgs) Handles Me.Shown
   LoadData() 'This function/sub will load data for this form
End Sub

Private Sub resert_button_Click(sender As Object, e As EventArgs) Handles resert_button.Click
        Me_Shown(sender,e) 
End Sub

使用Me.Dispose()而不是Me.Close()它将处理表单,然后当您再次调用Yourform.Show()时,它将生成一个新表单。

一种方法是向Form2添加属性。我假设你有两个表格,我们把它们叫做Form1和Form2。在Form1代码的某个地方,您声明了Form2的一个实例

Dim frm2 As New Form2
在某种程度上,您希望将Form2显示为一个模式窗口

frm2.ShowDialog()
现在让我们看看Form2代码

我在这里假设你有一个按钮来重置表单并关闭表单,你只需点击右上角的表单关闭按钮,也许你也有一个按钮来关闭表单。请考虑下面的Frim2

代码
Public Class Form2

    Friend Property resetOnClose As Boolean = False

    Private Sub btnReset_Click(sender As Object, e As EventArgs) Handles btnReset.Click
        resetOnClose = True
        Me.Hide()
    End Sub

    Private Sub btnclose_Click(sender As Object, e As EventArgs) Handles btnclose.Click
        resetOnClose = False
        Me.Hide()
    End Sub
End Class
有一个名为
resetOnclose
的属性,它是布尔类型。如果单击“重置”按钮,则此属性设置为
True
如果单击“关闭”按钮,则
resetOnClose
属性设置为false

在所有这些代码位中,
frm2
是隐藏的,而不是关闭的。这意味着表单及其
resetOnclose
属性仍可用于Form1。好的,现在来看看Form1代码

Public Class Form1
    Dim frm2 As New Form2

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Shown
        frm2.ShowDialog()
        Do
            If frm2.resetOnClose Then
                frm2.Close()
                frm2 = New Form2
                frm2.ShowDialog()
            Else
                frm2.Close()
            End If
        Loop Until frm2.resetOnClose = False
    End Sub
End Class
在本例中,只要显示Form1,
frm2
,就会立即打开,但您可以将相关代码放在需要的任何位置

在所示的
表单1.中,您将看到一个循环。只要
resetOnClose
True
,循环将继续循环。当以模式显示
frm1
时,此表单1代码中的执行将等待
frm2
被隐藏或关闭。接下来,Form1代码检查
resetOnClose
属性是true还是false。如果为false,
frm2
关闭,循环终止。如果属性为true,
frm2
将关闭,并在默认状态下重新分配
Form2
的新实例


尝试
Me.Hide
并交换订单

Me.Hide()
client.Show()

我假设
client\u entry
是您的第一个表单或您试图打开的表单的名称。尝试将
Dim client\u entry=New client\u entry
client\u entry.Show()
更改为
Dim client=New client\u entry
client.Show()
@ArunKumar感谢您的帮助,但它不起作用。这将是在加载表单时加载数据的函数/子函数