DataBinding的大用

本文介绍了一个使用CheckBox实现联动效果的方法。具体需求为通过主开关A控制面板C及其内部子开关B的状态变化,确保B可见时必为选中状态,且A与B的状态保持一致。文章详细解释了如何利用控件的DataBinding特性实现这一功能,使得代码简洁明了。

在项目开发中,遇到一类需求,效果有点像家里的电灯开关,有多个开关同时控制一个灯,无论拨那个都同样的效果。实际的需求是:两个CheckBox,A在上面,为主开关,B在panelC里面,为子开关。A选中后C显示+B选中、A未选中则C隐藏+B未选、B可见时必定为选中时,如果此时将B改为未选则A未选+C隐藏。

绕来绕去的,看个示例图。

最后的实现思路是用控件的DataBinding来做。

public Form1()
{
    InitializeComponent();
    chkA2.DataBindings.Add("Checked", chkA, "Checked",false, DataSourceUpdateMode.OnPropertyChanged);
}

private void chkA_CheckedChanged(object sender, EventArgs e)
{
    //MessageBox.Show("执行了");
}

在界面初始化完成之后,将两个控件的Checked属性绑定在一起。然后定义chkA的CheckedChanged事件。

值得注意的是:A和A2的Check值虽然绑定在了一起,但是这里只定义A的CheckedChanged事件,也就是说,无论点击A还是A2都只会触发一次A的CheckedChanged事件,不会陷入循环触发。这是中最重要的一点。

这样处理下来,代码量少,思路清晰。

留文备用---icy。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值