libro
www.tuyano.com
初心者のためのWindows Phoneプログラミング入門

さまざまなコントロールの利用 (2/6)

作成:2011-10-03 08:02
更新:2011-10-03 08:02

■ラジオボタンを使う

チェックボックスと同じくらい使用頻度の高いGUIに「ラジオボタン」があります。チェックボックスがON/OFFといった二者択一の設定であるのに対し、ラジオボタンは複数項目から1つを選択するのに用いられます。

これは「RadioButton」というコントロールとして用意されています。これを複数配置すれば、自動的にそれらが切り替え選択できるラジオボタンとなります。ただし、これはあまり進められたやり方ではありません。なぜなら、配置したものはすべて自動的に1つのグループとなってしまうため、1つの画面に複数のグループなどを配置できないからです。

ラジオボタンを利用する場合は、それぞれのグループ名を示す「GroupName」プロパティを使って明示的にグループを指定したほうがいいでしょう。RadioButtonは、GroupNameで指定された名前をチェックし、同じGroupNameのものを1つのグループとして扱うようになっています。名前を変えれば、1つのページ内にいくつもラジオボタンのグループを用意できるのです。

RadioButtonの選択状態は、CheckBoxと同様に「IsChecked」プロパティーで設定することができます。ただし、同一グループ内では常に1つしか選択できないので注意してください。筆者の環境ではあちこちIsCheckedTrueにしていたら指定のものがうまくONにされない現象が起こったりしました。明示的に他のRadioButtonIsCheckedFalseにしてからONにしたいものをTrueに設定したほうがいいようです。

選択状態のイベントは、やはり「Checked」「Unchecked」といったイベントプロパティが用意されています。ただし、ラジオボタンというのは選択したものがONになると、それまでONだったものは自動的にOFFになります。つまり、どれかをONにすると、「それ以前のもののUnchecked」「その項目のChecked」という2つのイベントが発生することになります。単純に「選択した項目をチェックして何かする」というのであればCheckedのみでいいでしょう。

下に簡単な利用例をあげておきます。RadioButtonを複数用意し、それぞれのCheckedradioCheckedメソッドを設定してください。選択した項目名がtextBlock1に表示されます。

ここでは、引数に渡されたobjetRadioButtonにキャストし、そのContentプロパティーを取り出して表示しています。注意すべきは、「ここでNullReferenceExceptionが発生する可能性がある」という点です。引数のobjectをキャストして利用する場合、常に「オブジェクトが空っぽだったら」という例外処理を考える必要があるようです。(そうしないとVisual Studioに怒られます)

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

private void radioChecked(object sender, RoutedEventArgs e)
{
	RadioButton r = (RadioButton)sender;
	try
	{
		textBlock1.Text = "select: " + r.Content;
	}
	catch(NullReferenceException ex){ }
}

※関連コンテンツ

「初心者のためのWindows Phoneプログラミング入門」に戻る