最初の列がチェックボックスである DataGridView コントロールを作成しました。チェック ボックス内をクリックすると、コードが正しく実行されます。ただし、チェックボックスではなくセルでクリックが発生した場合、コードはチェックボックスの状態を正しく処理しますが、チェックボックス自体を更新しないため、クリック前の状態のままになります。
これを修正するにはどうすればよいですか?
private void myDataGrid_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex == -1) return; //check if row index is not selected
DataGridViewCheckBoxCell ch1 = new DataGridViewCheckBoxCell();
ch1 = (DataGridViewCheckBoxCell)myDataGrid.Rows[e.RowIndex].Cells[0];
if (ch1.Value == null)
ch1.Value = false;
switch (ch1.Value.ToString())
{
case "False":
ch1.Value = true;
break;
case "True":
ch1.Value = false;
break;
}
//BUT doesn't seem to matter what I do with ch1.Value. Inside the checkbox all is OK but
//outside, no.
}
行の別のセルをクリックすると、チェック ボックスが正しく処理されます。チェックボックスのセルをクリックしたときのみ、チェックボックス自体はクリックしません。
つまり、コードは正しく実行されますが、UI は正しく更新されず、変更が反映されません。そのため、チェックボックスが実際にチェックされていても、ワードの後にもチェックされていないように見える前にチェックボックスがチェックされていない場合。
ありがとうロン