このコードを使用して DataGridViewCheckBoxColumn の項目を変更しようとしています
foreach (DataGridViewRow dgvUser in UsersGrid.Rows)
{
dgvUser.Cells["ChkSelect"].Value = true;
}
チェックボックスの値は変更されましたが、UI のチェックボックスはオフのままです。
どうやってするの ?
このコードを使用して DataGridViewCheckBoxColumn の項目を変更しようとしています
foreach (DataGridViewRow dgvUser in UsersGrid.Rows)
{
dgvUser.Cells["ChkSelect"].Value = true;
}
チェックボックスの値は変更されましたが、UI のチェックボックスはオフのままです。
どうやってするの ?
ここでの問題は、DataGridViewCheckboxCell
他の細胞とは異なる働きをすることです。何らかの理由で、チェックボックスの描画方法 (チェックまたはチェック解除) を決定するために使用されるプロパティはValue
、FormattedValue
ただし、DataGridViewCheckBoxCell で Value セッターが正しく動作するようにオーバーライドされているように感じます。したがって、 a で呼び出す場合は、ベースDataGridViewCell
のものを使用しています(これは FormattedValue には影響しません) が、セルをキャストすると動作するはずです:
((DataGridViewCheckBoxCell) dgvUser.Cells["ChkSelect"]).Value = true;
同じ行の他のチェックボックス列をクリアしようとしたときに、この正確な問題が発生しました(CellValueChangedメソッド内で実行されました)。私の問題を解決するには、次のコードが必要でした。
private void dgv_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
// filter for valid DataGridViewCheckBoxCell columns, if desired
dgv.CommitEdit(DataGridViewDataErrorContexts.Commit);
}