1

如何检查当前活动表单的任何控件(复选框/单选按钮)是否已被选中/切换?

我的目标是创建一个名为Save changes automatically的选项,它可以保存 and 的当前状态check boxesradio buttons因此我需要知道何时选择/切换任何控件(以执行保存设置方法)。我不想为每个控件创建一个单独的事件处理程序,如果可能的话,我正在寻找一个通用的解决方案。

4

2 回答 2

6

这不是用户界面的工作。

使用数据绑定在代码隐藏中更改模型并让模型触发/升级更改。


为您提供一点帮助:

您的复选框和其他控件不在您的数据所在的位置。他们应该只显示数据。

使用复选框的布尔属性和单选框的 int/enum 属性创建一个对象(模型)。设置从控件到属性的数据绑定。

然后您可以在属性的 Setter 中实现必要的逻辑。

于 2012-09-05T11:36:00.100 回答
0

正如 Henk 建议的那样,您可以使用诸如 MVC之类的关注点分离模式来分离 UI 和域逻辑。当用户对某些 UI 小部件进行更改时,您会更新模型中的值,例如通过设置属性。然后,属性设置器可以更新IsDirty(或 HasChanges,...)字段。UI 将读取此属性,UI 将根据 IsDirty 的值决定需要做什么。(显示一个 MessageBox("Do you want to save your changes") 或其他)

我确实认为当您用 标记问题时,Henk 正在思考网络问题WinForms。您可能没有使用模式来分离 UI 和域逻辑。(并且 UI 和域代码已经如此交织在一起,以至于您当前的截止日期不允许您现在引入模型)

Form您可以通过将 IsDirty 字段放在您的字段上并Changed EventHandlers设置 IsDirty 值来实现相同的目的。通过对表单进行子类化(即,将 IsDirty 放在您的“FormBase”上)和您的控件(例如通过引入水印),您可以为所有表单提供开箱即用的这种行为。

于 2012-09-05T12:06:27.990 回答