我有一个绑定到List< MyObject>的System.Windows.Forms DataGridView.
MyObject类包含一个布尔属性,该属性绑定到DataGridView中的DataGridViewCheckboxCell.
public class MyObject
{
public decimal DefaultValue {get; set; }
public bool HasCustomValue {get;set; }
public decimal CustomValue {get;set; }
public decimal CurrentValue
{
get
{
return HasCustomValue
? CustomValue
: DefaultValue;
}
}
如果我更改HasCustomValue的值,另一个(只读)属性CurrentValue也会更改它的值.
这是通过实现INotifyPropertyChanged事件来完成的(为简单起见,我在源代码示例中留下了那部分)
如果我从DataGridView外部更改了HasCustomValue,则绑定到CurrentValue的列会立即更新.
但是,如果用户启用/禁用复选框,则基础数据源中的HasCustomValue不会更改,除非他通过单击鼠标或按TAB键离开列.
有没有办法在更改复选框值后强制网格直接更新数据源?
如果我绑定一个控件属性我有能力将DataSourceUpdateMode设置为Windows.Forms.DataSourceUpdateMode.OnPropertyChanged但我没有在DataGridView中找到类似的东西
解决方法:
我假设你正在使用bindingsource然后在Check Box Click事件/编辑做,
BindingSource.EndEdit()