我正在开发一个 vb.net windows 应用程序。在这个我有一个窗口窗体,它有几个文本框和几个控件。现在,在加载表单后,我在该表单中创建并删除了一些控件。我在表单上还有一个重置按钮,因此用户可以单击它并获得表单的原始设计。我试图调用 InitializeComponents() 方法。但它不反映表格上的任何变化。如何在按钮点击时获得我的原始设计?
好的,我需要修改我的问题。我不想重新设计我的所有控件,而只想重新设计我修改过的树视图。
Windows 窗体的“原始”状态/设置不会在任何地方跟踪。您在运行时所做的修改(添加、调整大小、删除等控件)都是实时发生的,并成为表单的当前唯一状态。
您可以自己跟踪原始设置,然后编写代码来循环所有控件并恢复它们,但这将是很多工作。
更简单的解决方案是销毁当前表单并用新创建的表单替换它。当然,当创建一个新表单时,它会具有默认状态,这正是您想要的。
编辑:调用InitializeComponents()
不是一个完美的解决方案。不叫它是有原因的ReinitializeComponents()
。它旨在在首次创建和显示表单时进行初始初始化。它的设计目的不是为了在其他地方被客户端代码再次调用。无论如何,如果你这样做,它会破坏事情。
如果树节点是您唯一担心保留的东西,为什么不声明一个类级成员来保存您删除的那些?您可以在它们被删除后使用 aQueue
或Stack
集合之类的东西来保存它们,并在要将它们恢复到 TreeView 时将它们弹出。
Public Sub resetform(ByVal form_name as Form)
form_name.dispose
form_name.show
End Sub
在您的按钮单击事件上调用 resetform
resetform(YourFormName)
我刚刚工作,现在完成了。我将一个变量作为树节点并分配了原始树视图的克隆。最后只需将该变量添加到我的树视图中。