セルを選択して編集すると、DataGridView
プロパティIsCurrentCellDirty
がTrue
に設定されます。この状態がDataGridViewCheckBoxCell
に変更されたときにイベントハンドラをキャッチした場合は、DataGridView.EndEdit()
に電話して直ちに変更を確定することができます。
this.dataGridView1.CurrentCellDirtyStateChanged += DataGridView1_CurrentCellDirtyStateChanged;
private void DataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (this.dataGridView1.IsCurrentCellDirty && this.dataGridView1.CurrentCell is DataGridViewCheckBoxCell)
{
this.dataGridView1.EndEdit();
}
}
さらなる説明:舞台裏
、DataGridView.IsCurrentCellDirty
は、現在のセルを編集するたびに更新されます。上記のコードの最初の行では、CurrentCellDirtyStateChanged
イベントに独自のイベントハンドラ(DataGridView1_CurrentCellDirtyStateChanged
)を添付することができます。だから、細胞が汚れたときはいつも、舞台裏で基本レベルのイベントが呼び出され、あなたの方法も呼び出されます。その行がなければ、あなたのメソッドは呼び出されません。 +=
オペレータは、がイベントのコールチェーンにメソッドをアタッチするものです。例えば
、次のハンドラを追加:
this.dataGridView1.CurrentCellDirtyStateChanged += DataGridView1_Example1;
// this.dataGridView1.CurrentCellDirtyStateChanged += DataGridView1_Example2;
this.dataGridView1.CurrentCellDirtyStateChanged += DataGridView1_Example3;
private void DataGridView1_Example1(object sender, EventArgs e)
{
Console.WriteLine("Example 1");
}
private void DataGridView1_Example2(object sender, EventArgs e)
{
Console.WriteLine("Example 2");
}
private void DataGridView1_Example3(object sender, EventArgs e)
{
Console.WriteLine("Example 3");
}
をすると汚れの状態が変化し、次のような出力が表示されます。第二イベントハンドラが除外された注意してください:
// Example 1
// Example 3
私はあなたのコードを使用して、私は、の必要性を理解してはいけない.butそれが正しく動作{this.dataGridView1.CurrentCellDirtyStateChanged + = DataGridView1_CurrentCellDirtyStateChangedを;} – saeid