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