DataGridViewのチェック列のチェックで、セルクリックでもチェックのオン/オフができるようにする
チェック列にあるチェック欄は、チェック欄内をクリックすればオン/オフされますが、その外側のセルの余白?空白?のクリックでは反応しません。それの対応です。
イメージ
サンプルソース
using System.Windows.Forms; /* * StackOverflow * Datagridview checkbox checked when clicking the cell * https://stackoverflow.com/questions/29398941/datagridview-checkbox-checked-when-clicking-the-cell * * サンプル * Column1, DataGridViewCheckBoxColumn, HeaderText = Column1 * Column2, DataGridViewTextBoxColumn, HeaderText = Column2, AutoSizeMode = Fill * * あと行追加・削除とかも false にしたかな? * */ namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); dataGridView1.Rows.Add(); dataGridView1.Rows.Add(); dataGridView1.Rows.Add(); } private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex <= -1 || e.RowIndex <= -1) return; // チェック列だったら if (dataGridView1.Columns[e.ColumnIndex].HeaderText == "Column1") { // null/true/false のいづれかなので、現在値が null だったら その逆の? true、現在値がどちらかだったら、逆のどちらかをセット var cell = dataGridView1.CurrentCell as DataGridViewCheckBoxCell; var isChecked = cell.Value is null ? true : (bool)cell.Value ? false : true; cell.Value = isChecked; dataGridView1.RefreshEdit(); dataGridView1.NotifyCurrentCellDirty(true); } } private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { dataGridView1.RefreshEdit(); } } }