有状态Winform和取消按钮

时间:2012-05-30 18:16:58

标签: c# .net winforms cancel-button

由于表格/对话框底部的“确定”和“取消”按钮的出现,我很奇怪我似乎无法找到保存控制状态的“标准”方式。

例如,我有一个经过检查的过滤器列表框。当用户单击“确定”按钮时,它会将过滤器应用于数据集并关闭表单。如果用户单击取消按钮,则表单将撤消所有选中项目更改并关闭表单。

在完美的世界中,当用户点击“确定”按钮时,用当前控制状态覆盖保存的控制状态,并设置新状态标志。当表单关闭时,如果设置了新状态标志,则表单将重置该标志,如果未设置,则表单将使用保存的控件状态替换显示的控件。这样,如果点击取消按钮,则重置用户所做的所有检查更改。

处理取消按钮的最佳实践方法是什么?撤消对控件甚至整个表单的更改?有最佳实践解决方案吗?我可以看到这对于文本框,径向按钮,复选框以及几乎所有控件都是必需的,因此请尝试保持它的通用性,而不是特定于选中的列表框。

2 个答案:

答案 0 :(得分:5)

我建议它就像:

  • 将UI中反映的数据与UI本身分开
  • 加载表单时,请根据数据
  • 设置其内容
  • 当用户单击“确定”时,将更改保存到数据模型中(无论如何实现,这将取决于您如何填充模型)
  • 当用户点击取消时,保存任何更改

无需“撤消”取消的更改 - 您只需丢弃表单即可。当您接下来想要显示表单时,将像以前一样加载相同的数据,因为您没有保存对它的任何更改。

答案 1 :(得分:0)

简单方法:不要重复使用表单实例。在每个var childForm = new MyChildForm();

之前childForm.Show();