DataGridView 更改复选框值后直接更新数据源

Jür*_*ock 5 .net c# datagridview datagridviewcheckboxcell winforms

我有一个 System.Windows.Forms DataGridView 绑定到List<MyObject>.
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;
        }
}
Run Code Online (Sandbox Code Playgroud)

如果我更改HasCustomValue另一个(只读)属性CurrentValue的值也会更改它的值。这是通过实现 INotifyPropertyChanged 事件来完成的(为了简单起见,我将该部分留在了源示例中)

如果我HasCustomValue从 DataGridView 外部更改,绑定到的列CurrentValue会立即更新。但是,如果用户启用/禁用复选框,HasCustomValue则不会在基础数据源中更改,除非他通过单击鼠标或按 TAB 键离开该列。

有没有办法在更改复选框值后强制网格直接更新数据源?

如果我绑定了一个控件属性,我可以设置为DataSourceUpdateModeWindows.Forms.DataSourceUpdateMode.OnPropertyChanged但我在 DataGridView 中没有找到类似的东西

par*_*agy 2

我假设您正在使用绑定源,然后在复选框单击事件/编辑上执行,

    BindingSource.EndEdit()
Run Code Online (Sandbox Code Playgroud)