【问题标题】:Remove the windows form controls on exit在退出时删除 Windows 窗体控件
【发布时间】:2013-04-12 12:21:33
【问题描述】:

我在手动加载表单时添加表单控件:

Me.FieldI = New TextBox()
Me.FieldI.Location = New System.Drawing.Point(50, 10)
Me.FieldI.Name = "FieldI"
Me.FieldI.Size = New System.Drawing.Size(40, 20)
Me.FieldI.TabIndex = 5
Me.Conversion.Controls.Add(Me.FieldI)
[..]

当我关闭表单窗口并重新打开它时,控件仍然存在(使用旧的 .Text 内容,因为在这种情况下它是一个文本框)。

我想删除在表单关闭事件中加载表单时创建的控件,以防止表单上的元素加倍。

我怎样才能做到这一点?

编辑

表单关闭代码如下所示(只是显示了主表单):

Private Sub Form1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.FormClosing
    Main.Show()
End Sub

【问题讨论】:

  • 了解如何关闭表单以及如何重新打开表单会很有趣。如果您真的销毁表单并打开它的新实例,则不应发生此行为
  • 我已经编辑了我的帖子。除了 Main.Show() 之外没有添加任何内容以显示主窗体。
  • 当我在表单关闭事件中添加Me.Conversion.Controls.Remove(Me.FieldI) 时,它确实可以正常工作......但是我真的需要手动删除这么多表单元素吗? (关于20元素)
  • 您是在 Form.Load 或 Form.Activated 上添加控件??
  • @MandeepSingh 我正在为Form.Load 事件添加控件。

标签: vb.net winforms controls visual-studio-2010


【解决方案1】:

这里的问题是表单没有被释放,所以当你再次打开它时,控件仍然存在于上次打开时。

尝试以下方法:

Using frm = New subForm()
  frm.ShowDialog()
End Using

变量frm在使用后会被释放。

还有……

您还可以通过对话框提供反馈,以检查表单是否成功。例如:

Dim frm As New subForm()
If frm.ShowDialog = DialogResult.OK Then
  'YAY!
Else
  'Something failed
End If

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多