繁体   English   中英

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

[英]How to check if a winforms control has been selected/toggled?

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

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

这不是用户界面的工作。

使用数据绑定在代码背后更改模型,并让模型触发/升级更改。


为了对您有所帮助:

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

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

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

正如Henk所建议的,您可以使用“关注分离”模式(例如MVC)来分离UI和域逻辑。 当用户对某些UI小部件进行更改时,您可以通过例如设置属性来更新模型中的值。 然后,属性设置器可以更新IsDirty (或HasChanges,...)字段。 UI将读取此属性,UI会根据IsDirty的值来确定需要执行的操作。 (显示一个MessageBox(“是否要保存更改”)或其他内容)

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM