我希望在与用户进行一些互动后获得我的表单的默认视图。 换句话说,在用户隐含的一些更改后,什么命令会将表单返回到初始弹出窗口? 我有很多控件和计算,所以我不想逐个遍历控件并将它们设置为null或它们的默认值。 这将是伟大的,好像我再次启动表格,一些如何。
答案 0 :(得分:7)
您可以尝试清除表单上的控件,然后调用InitializeComponent()
方法。
while (Controls.Count > 0)
{
Controls[0].Dispose();
}
InitializeComponent();
修改强>
另一个不会导致任何性能问题的选项是利用数据绑定。创建一个数据对象,该数据对象与您要重置的所有字段一对一映射,然后一旦重置表单,只需将表单的数据源设置为数据对象的新实例。
答案 1 :(得分:4)
你也可以这样做,假设你只想重置控件上的文字。使用ResetControl(this)调用以下函数,其中“this”是您的表单。您需要检查控件类型,以免出现意外后果,例如擦除标签文本。
private void ResetControl(Control control)
{
if (control.HasChildren)
foreach (var ctl in control.Controls)
ResetControl((Control)ctl);
if (control is TextBox)
control.ResetText();
}
虽然,我仍然认为如果您只是处理表单并创建一个新表单(您可以加载一个加载用户控件的初始表单,并处置用户控件或使用mdi容器),您将会有更少的错误形式加载另一种形式或东西)。
答案 2 :(得分:0)
最好的方法是编写个性化的函数ResetForm()
并单独重置每个组件:
for TextBox ==> TextBox1.Text = "default text";
for ComboBox ==> ComboBox1.ResetText();
for DataGridView ==> DataGridView1.RowCount=1;
等...