DataGridViewにチェックボックスを配置することは、けっこう簡単にできますが、ラジオボタンを配置することは難しいです。できるんですか?
そこで、チェックボックスを単一選択にしてラジオボタンのかわりにしてしまおうと。
チェックボックスの配置は簡単にできますが、これを単一選択にするようなメソッドもプロパティもありません。
そこで、チェックボックスのイベントを捕まえてなんとかしようとするわけですが、ちょっとコツがあります。
チェックされたチェックボックスにReadOnlyを設定するのです。チェックされていないチェックボックスはReadOnlyを解除しておきます。
これで余計なイベントの発生が防げます。
// チェックボックスのCellValueChangedイベント
private void dataGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
// 選択列の場合
if (e.ColumnIndex == 0)
{
// 今回チェック設定した
if ((bool)dataGridView[e.ColumnIndex, e.RowIndex].Value == true)
{
// 他にチェックされている項目がある場合はそのチェックを解除
for (int rowIndex = 0; rowIndex < dataGridView.Rows.Count; rowIndex++)
{
if ((rowIndex != e.RowIndex) && ((bool)dataGridView[0, rowIndex].Value == true))
{
// チェックを解除
dataGridView[0, rowIndex].Value = false;
// ReadOnlyを解除
dataGridView[0, rowIndex].ReadOnly = false;
}
}
// 今回チェックした場所をReadOnlyに設定
dataGridView[e.ColumnIndex, e.RowIndex].ReadOnly = true;
}
}
}