如何检查是否已选择/切换winforms控件?

时间:2012-09-05 11:32:15

标签: c# winforms controls

如何选中/切换当前活动表格的任何控件(复选框/单选按钮)?

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

2 个答案:

答案 0 :(得分:6)

这不是用户界面的工作。

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


为了帮助你一点点:

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

创建一个对象(Model),其中包含复选框的复选框和int / enum属性的布尔属性。设置从控件到属性的数据绑定。

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

答案 1 :(得分:0)

正如Henk所提议的,您可以使用Separation of Concerns模式(如MVC)来分隔UI和域逻辑。当用户对某个UI窗口小部件进行更改时,您可以更新模型中的值,例如通过设置属性。然后,属性设置器可以更新IsDirty(或HasChanges,...)字段。这个属性将由UI读取,根据IsDirty的值,它将决定需要做什么。 (显示MessageBox(“您想保存更改”)或其他内容)

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

您可以通过在Form上放置IsDirty字段并将Changed EventHandlers设置为IsDirty值来实现相同的功能。通过继承Form(即将IsDirty放在你的'FormBase'上)和你的控件(例如通过引入水印),你可以为所有表单开箱即用。