選択肢から一つ選ぶ
いくつかある選択肢から一つだけ選んでもらいたいときに使うやつ。チェックボックス同様に起動中のパラメータ変更に使えそうですね。
チェックボックスで選択肢を並べると、1つも選ばなかったり2つ選んだりできてしまいますが、ラジオボタンを使えば中から一つだけ選んでもらうということができます。
RadioButtonクラス
public class RadioButton : Control
例によってControlから継承されてます。
プロパティ
(string) Text {get; set;}
ラジオボタン横に表示するテキストを取得、設定します。
(bool) IsChecked {get; set;}
ラジオボタンのチェック状態を取得、設定します。
(string) GroupName {get; set;}
ラジオボタンのグループ名を指定します。同じグループ名のボタンのうち一つだけにチェックがつけられるようになります。
(ControlBase) Content {get; set;}
ラジオボタンのテキスト部分に表示させるコントロールを取得、設定します。Textより優先します。
ControlBase, Controlのプロパティ
表示位置、サイズ、色などの基本設定はこっちです。
イベント
マウスクリックでチェックされた場合はClickとChecked両方のイベントが起きます。
チェックが切り替わる際は、すでにチェックされてた方のUncheckedと新たにチェックされた方のChecked両方のイベントが起きます。
Click
クリックされた。
Checked
チェックされた
Unchecked
チェックが外された
サンプルコード
var radioJPY = new RadioButton {
Text = "JPY",
GroupName = "currency_select",
BackgroundColor = Color.White,
ForegroundColor = Color.Red,
IsChecked = false,
};
var radioEUR = new RadioButton {
Text = "EUR",
GroupName = "currency_select",
BackgroundColor = Color.Blue,
ForegroundColor = Color.Yellow,
IsChecked = false,
};
radioJPY.Click += (args => Print("JPY pushed!"));
radioJPY.Checked += (args => Print("JPY checked"));
radioJPY.Unchecked += (args => Print("JPY unchecked"));
radioEUR.Click += (args => Print("EUR pushed!"));
radioEUR.Checked += (args => Print("EUR checked"));
radioEUR.Unchecked += (args => Print("EUR unchecked"));
var panel = new StackPanel {
HorizontalAlignment = HorizontalAlignment.Center,
VerticalAlignment = VerticalAlignment.Center,
};
panel.AddChild(radioJPY);
panel.AddChild(radioEUR);
Chart.AddControl(panel);
同じグループ内のIsCheckedをすべてfalseにしておくと、全くチェックがない状態を初期状態にはできますが、逆にすべてtrueはできません。(最後にtrueにしたボタンが選択された状態になる)
なお、ラジオボタンもチェックボックス同様、BackgroundColorはチェックする部分の背景色です。
RadioButtonEventArgsクラス
上記イベント発生時にコールバックされるメソッドの引数です。上記サンプルコード内ならラムダ式内のargsがこの型です。(使ってませんけど)
public class RadioButtonEventArgs : Object
プロパティ
(RadioButton) RadioButton
イベントが発生したチェックボックスを取得します。