如何在与用户交互后将表单重置为其默认外观

时间:2011-07-13 01:56:43

标签: c# winforms

我希望在与用户进行一些互动后获得我的表单的默认视图。 换句话说,在用户隐含的一些更改后,什么命令会将表单返回到初始弹出窗口? 我有很多控件和计算,所以我不想逐个遍历控件并将它们设置为null或它们的默认值。 这将是伟大的,好像我再次启动表格,一些如何。

3 个答案:

答案 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;

等...