WinForms中CheckBox数据绑定失效及正确配置方案
WinForms CheckBox数据绑定切换数据源失效问题解决
问题现象
在WinForms开发中,CheckBox的DataBindings存在更换新DataSource后失效的问题:
场景1:先为checkBox1添加数据绑定,再重新赋值settingsParser对象
checkBox1.DataBindings.Add(nameof(checkBox1.Checked), settingsParser, nameof(settingsParser.IsTestProperty), false, DataSourceUpdateMode.OnPropertyChanged); settingsParser = settingsService.ReadFilfe2(pathFileCampaign);
结果:settingsParser.IsTestProperty属性无法随CheckBox状态更新。
场景2:先重新赋值settingsParser对象,再添加数据绑定
settingsParser = settingsService.ReadFilfe2(pathFileCampaign); checkBox1.DataBindings.Add(nameof(checkBox1.Checked), settingsParser, nameof(settingsParser.IsTestProperty), false, DataSourceUpdateMode.OnPropertyChanged);
结果:settingsParser.IsTestProperty属性可正常更新。
疑问
是否可先创建SettingsParser对象、配置DataBindings,后续仅更新对象内容?还是每次更换SettingsParser都需重新配置绑定?
核心目标
实现MainForm中DataGrid选中条目后,加载对应JSON配置文件,并将配置内容显示在绑定控件中。
解决方案
通过BindingSource作为中间层实现动态数据源切换:
SettingsParser settingsParser = null; BindingSource bs = null; settingsParser = settingsService.ReadFilfe2(pathFileCampaign); bs = new BindingSource(settingsParser, null); checkBox1.DataBindings.Add(nameof(checkBox1.Checked), bs, nameof(settingsParser.IsTestProperty), false, DataSourceUpdateMode.OnPropertyChanged);
后续更换数据源时,只需更新bs.DataSource为新的SettingsParser对象即可。
内容的提问来源于stack exchange,提问作者eusataf
相关产品推荐
相关产品推荐

