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;
}
}
以上、大きいチェックボックスの作り方でした。