C# で大きいサイズのチェックボックスを作る

C# でチェック欄の見た目を大きくしたチェックボックスを作ります。色も付けます。
低レイヤーの話ではありませんが、あまり知られていないようなので書き留めておきます。

動作確認環境

  • Windows 11 Home 22H2
  • Visual Studio Community 2022
  • .NET Framework 4.7.2 (WinForms)

今回作るチェックボックス

一般的なチェックボックスは以下のようなものですが、

今回作るチェックボックスはこれです。

大きくて目立つ、タッチパネルでも押しやすいチェックボックスです。

大きいチェックボックスの作り方

作り方は簡単です。Visual Studio のツールボックスからいつもの CheckBox 部品を選んで、フォームに置きます。

プロパティを次のように変更します。

  • Appearance : Button
  • AutoSize: False
  • BackColor: White
  • Checked: True
  • Font MS UI Gothic, 24pt
  • ForeColor : Green
  • Size : 40, 40
  • Text: ✔
  • TextAlign: MiddleCenter

Text プロパティの値「✔」は、標準の IME では「ちぇっく」で変換できます。文字コードは U+2714 です。
なお、デフォルトで OFF にする場合は、Checked を False に、Text プロパティの値を空に設定してください。

そして、CheckedChanged イベントの処理を書きます。

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
    CheckBox cb = sender as CheckBox;
    cb.Text = cb.Checked ? "✔" : "";
}

以上で完成です。クリックするたびに、次のように切り替わります。

CheckedChanged イベントの処理を少し変更すれば、

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
    CheckBox cb = sender as CheckBox;
    cb.Text = cb.Checked ? "✔" : "✘";
    cb.ForeColor = (sender as CheckBox).Checked ? Color.Green : Color.Crimson;
}

緑の「レ点」と赤の「×印」で切り替わるようにもできます。文字「✘」は、標準の IME では「ばつ」で変換できます。文字コードは U+2718 です。

ただし、海外では「×印」が「選択」を意味することもあるようなので要注意です

アクセスキーの実装

このままではアクセスキーが効きません。たとえば、[Alt]+[X] 押下のたびに当該チェックボックスの ON/OFF が切り替わるような動作はしません。
アクセスキーを実装したい場合は、フォームの KeyPreview プロパティを True に設定し、KeyDown イベントに次のように書くなどして個別に実装してください。

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyData == (Keys.Alt | Keys.X))
    {
        checkBox1.Select();
        checkBox1.Checked = !checkBox1.Checked;
    }
}

以上、大きいチェックボックスの作り方でした。