にバインドされている 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;
}
}
HasCustomValue
別の (読み取り専用) プロパティの値を変更すると、その値もCurrentValue
変更されます。これは、INotifyPropertyChanged イベントを実装することによって行われます (簡単にするために、その部分をソースの例に残しました)。
DataGridView の外部から変更した場合HasCustomValue
、バインドされた列CurrentValue
はすぐに更新されます。ただし、ユーザーがチェックボックスを有効または無効にHasCustomValue
しても、マウスをクリックするか TAB キーを押して列を離れない限り、基になるデータソースでは変更されません。
チェックボックスの値を変更した後、グリッドがデータソースを直接更新するように強制する方法はありますか?
コントロールプロパティをバインドすると、に設定するDataSourceUpdateMode
ことWindows.Forms.DataSourceUpdateMode.OnPropertyChanged
ができますが、DataGridView でそのようなものは見つかりませんでした