DataGridViewで単一選択のチェックボックスを作る[C#]

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;
        }
    }
}

コメントする

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

%s に接続中

フォロー

Get every new post delivered to your Inbox.