有状态的 Winform 和 取消 按钮

本文关键字:取消 按钮 Winform 状态 | 更新日期: 2023-09-27 18:36:00

随着表单/对话框底部"确定"和"取消"按钮的盛行,我似乎找不到保存控件状态的"标准"方法对我来说很奇怪。

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

在理想情况下,当用户单击"确定"按钮时,保存的控件状态将被当前控件状态覆盖,并设置新状态标志。 当窗体关闭时,如果设置了新状态标志,则窗体将重置该标志,如果未设置,窗体会将显示的控件替换为保存的控件状态。 这样,如果点击取消按钮,则会重置用户所做的所有已检查更改。

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

有状态的 Winform 和 取消 按钮

我建议它像:

  • 将 UI 中反映的数据与 UI 本身分开
  • 加载表单时,根据数据设置其内容
  • 当用户单击"确定"时,保存对数据模型所做的更改(无论如何实现,这将取决于您填充模型的确切方式)
  • 当用户单击"取消"时,不要保存任何更改
无需"撤消"对

"取消"的更改 - 您只需丢弃表单即可。当您下次想要显示表单时,将加载与以前相同的数据,因为您没有保存对表单所做的任何更改。

简单的方法:不要重复使用表单实例。 在每次childForm.Show();之前进行var childForm = new MyChildForm();