C#(WPF)でチェックボックスを使う方法を紹介します。チェックボックスをクリックして操作する方法と、bool変数が切り替わるとチェックボックスのGUI(見た目)も連動して変化するサンプルを作成しました。これを理解すればチェックボックスは十分かと思います。
C#のチェックボックスの使い方
チェックボックスは、bool型変数と紐づけられて使用されます。
主な用途としては、以下のような状態管理や条件分岐になります。
- 状態に応じて、一部処理を実行可能/実行不可能にする
- フラグに応じて、データの計算方法を切り替えたいとき
サンプルコード
作成したサンプルは以下の通り。

チェックボックスをクリック、またはボタンを押すとフラグ(boolo変数)が切り替わります。
フラグの内容に応じて対応したGUIが常に表示されるようになっています。
またコードはMVVM形式で作成しています。
View
XAMLは以下の通り。
<Window x:Class="CheckBox.Views.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="CheckBox" Height="200" Width="300">
<Grid>
<StackPanel Orientation="Vertical">
<CheckBox Content="状態チェックボックス" IsChecked="{Binding state_flg}" Margin="10"/>
<!--フラグ切り替えボタン-->
<Button Content="フラグ切り替えボタン" Command="{Binding Button1_Pushed}" />
<!--状態表示テキスト-->
<TextBlock Text="{Binding state_txt}" />
</StackPanel>
</Grid>
</Window>
コードビハインドは以下の通り(いつもの)。
using CheckBox.ViewModels;
using System.Windows;
namespace CheckBox.Views
{
public partial class MainWindow : Window
{
MainViewModel vm = new MainViewModel();
public MainWindow()
{
InitializeComponent();
this.DataContext = vm;
}
}
}
ViewModel
2つの変数(state_flg、state_txt)をXAMLとのバインド用に使用しています。
SwitchTextメソッドは、フラグ(state_flg)が変わった際に必ず呼ばれ、フラグに応じたテキストをstate_txtに代入するものです。
using CheckBox.Common;
using System;
using System.ComponentModel;
using System.Windows.Input;
namespace CheckBox.ViewModels
{
internal class MainViewModel : INotifyPropertyChanged
{
//コマンド
public ICommand Button1_Pushed { get; set; }
public MainViewModel()
{
//コマンド
Button1_Pushed = new RelayCommand(Button1_Command);
}
//コマンドの処理内容
private void Button1_Command()
{
//フラグの切り替え
if (state_flg == true)
{
state_flg = false;
}
else
{
state_flg = true;
}
//フラグに応じてテキスト切り替え
SwitchText();
}
//状態表示テキスト切り替え関数
private void SwitchText()
{
//フラグに応じて切り替え
if (state_flg == true)
{
state_txt = "True";
}
else
{
state_txt = "False";
}
}
//ステータス表示用テキスト
private string _state_txt = "False";
public string state_txt
{
get { return _state_txt; }
set
{
_state_txt = value;
NotifyPropertyChanged("state_txt");
}
}
//ステータスフラグ
private bool _state_flg;
public bool state_flg
{
get { return _state_flg; }
set
{
_state_flg = value;
NotifyPropertyChanged("state_flg");
//表示テキストの切り替え
SwitchText();
}
}
//変数の更新通知用
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
}
}
73行目がないとチェックボックス自体をクリックした際に、テキストが変化しません。
(StyleのDataTriggerを使用して、フラグとテキストを連携する方法もあります。)
以下GUI関連記事。






コメント