■はじめに
引き続き色々なコントロールを使ってみます。
キーワード:Label, TextBox, TextBlock, CheckBox, ToggleButton, RadioButton, Expander, ComboBox, ListBox, CheckedListBox, アクセスキー
[注意]
これまでの回で説明済みの操作方法等は、説明を省略したり簡略化している場合があります。
■開発環境
- Windows 10
- Visual Studio Community 2017 ※今回から2017です
- .NET Framework 4.x
■作ってみる
◇新規プロジェクト作成
「Windowsクラシックデスクトップ」 - 「WPFアプリ」を選択します。
Grid
をStackPanel
に変え、その中にStackPanel
を2つ用意します。
<Window x:Class="WpfApp09.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"
xmlns:local="clr-namespace:WpfApp09"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<StackPanel>
<StackPanel Orientation="Horizontal">
</StackPanel>
<StackPanel Orientation="Horizontal">
</StackPanel>
</StackPanel>
</Window>
◇ラベル, テキストボックス
StackPanel
の中にLabel
とTextBox
を配置します。
Label
にはアクセスキーを設定することができます。
Altを押しながらアクセスキーを押すと、指定したコントロールにフォーカスが移動します。
アクセスキーを設定するには、Content
のアクセスキーにしたい文字の前にアンダースコアを追加します。
移動先のコントロールはTarget
で指定します。
書式: Target="{Binding ElementName=
【移動先のコントロール名】}"
<StackPanel Orientation="Horizontal">
<Label Content="ユーザー(_U)" Target="{Binding ElementName=userName}" Width="80"/>
<TextBox x:Name="userName" Text="たろう" Width="200" Margin="5"/>
</StackPanel>
<StackPanel Orientation="Horizontal">
<Label Content="メモ(_M)" Target="{Binding ElementName=memo}" Width="80"/>
<TextBox x:Name="memo" Text="ああああ" AcceptsReturn="True" AcceptsTab="True"
TextWrapping="Wrap" VerticalScrollBarVisibility="Auto"
Height="60" Width="200" Margin="5"/>
</StackPanel>
2つ目のTextBox
は、複数行入力させるためのプロパティを指定しています。
■ Labelコントロールでよく使いそうなプロパティ
プロパティ | カテゴリ | 備考 |
---|---|---|
Content | 共通 | ラベルに表示する内容 |
Target | その他の設定 | アクセスキー押下時にフォーカスを受け取るコントロール |
■ TextBoxコントロールでよく使いそうなプロパティ
プロパティ | カテゴリ | 備考 |
---|---|---|
HorizontalScrollBarVisibility | レイアウト | 横スクロールバー |
VerticalScrollBarVisibility | レイアウト | 縦スクロールバー |
AcceptsReturn | テキスト | Enterキーで改行するかどうか |
AcceptsTab | テキスト | Tabキーでタブ文字を入力するかどうか |
MaxLength | テキスト | 入力可能な最大文字数 |
TextWrapping | テキスト | テキスト折り返し設定 |
Text | 共通 | テキストの内容 |
◇高機能ラベル, ON/OFF
続いて★の部分に以下を入力します。
:
:
</StackPanel>
★
</StackPanel>
</Window>
<TextBlock Text="いいいいいいいい"/>
<TextBlock Text="太字 太字 太字" FontWeight="Bold" FontSize="16"/>
<TextBlock>ううううう</TextBlock>
<TextBlock Foreground="Blue">
えええええええ<LineBreak/>
おおおおおおおお
</TextBlock>
<TextBlock Text="かきくけこさしすせそ" TextWrapping="Wrap" Width="40"/>
<TextBlock>
ABCD
<Underline>EFGH</Underline>
<Bold>IJKL</Bold>
<Run Foreground="Green" FontWeight="Bold" FontSize="18">MNOP</Run>
<Run Background="Pink" FontFamily="Meiryo">QRSTたちつてと</Run>
</TextBlock>
<StackPanel Orientation="Horizontal">
<CheckBox Content="CheckBox" Margin="5"/>
<CheckBox Content="CheckBox" IsChecked="True" Margin="5"/>
<ToggleButton Content="トグルボタン" Margin="5"/>
<ToggleButton Content="トグルボタン" IsChecked="True" Margin="5"/>
</StackPanel>
<Button x:Name="button" Content="次の画面"/>
TextBlock
は文字装飾を設定できるラベルです。
太字にしたり改行したりできます。
CheckBox
とToggleButton
はON/OFFを表せるコントロールです。
ToggleButton
は標準ではツールボックスに表示されていないので、直接タグ入力してください。
■ TextBlockコントロールでよく使いそうなプロパティ
プロパティ | カテゴリ | 備考 |
---|---|---|
FontWeight | テキスト | 太字 |
TextWrapping | テキスト | 折り返し |
Text | 共通 | テキストの内容 |
■ CheckBoxコントロールでよく使いそうなプロパティ
プロパティ | カテゴリ | 備考 |
---|---|---|
Content | 共通 | チェックボックスの内容 |
IsChecked | 共通 | 選択状態 |
■ ToggleButtonコントロールでよく使いそうなプロパティ
プロパティ | カテゴリ | 備考 |
---|---|---|
Content | 共通 | トグルボタンの内容 |
IsChecked | 共通 | 選択状態 |
Alt + U, Alt + Mでそれぞれユーザーテキストボックス、メモテキストボックスにフォーカスが移動すること、メモテキストボックスの内容にタブ文字や改行を入力できることを確認してください。
画面を閉じて、プロジェクトに新しい項目「ウィンドウ(WPF)」を追加してください。
名前はWindow1.xaml
にします。
「次の画面」ボタンのクリック処理を作ります。
<Button x:Name="button" Content="次の画面" Click="button_Click"/>
private void button_Click(object sender, RoutedEventArgs e)
{
new Window1().ShowDialog();
}
◇ラジオボタン, コンボボックス, リストボックス
Window1
の画面を作ります。
RadioButton
は、同じGroupName
の中で1つだけ選択状態にできるコントロールです。
Expander
は、その中にあるコントロールを畳んで隠したり、展開したりできます。
ComboBox
やListBox
の選択肢はItems
プロパティのコレクションエディターから追加することができます。
コレクションエディターで追加するアイテムを選択し、「追加」ボタンを押します。
<Window x:Class="WpfApp09.Window1"
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"
xmlns:local="clr-namespace:WpfApp09"
mc:Ignorable="d"
Title="Window1" Height="300" Width="300">
<StackPanel>
<GroupBox Header="グループ1">
<StackPanel Orientation="Horizontal">
<RadioButton Content="ラジオボタン1" GroupName="A" IsChecked="True"/>
<RadioButton Content="ラジオボタン2" GroupName="A"/>
<RadioButton Content="ラジオボタン3" GroupName="A"/>
</StackPanel>
</GroupBox>
<GroupBox Header="グループ2">
<StackPanel Orientation="Horizontal">
<RadioButton Content="ラジオボタン1" GroupName="B"/>
<RadioButton Content="ラジオボタン2" GroupName="B" IsChecked="True"/>
<RadioButton Content="ラジオボタン3" GroupName="B"/>
</StackPanel>
</GroupBox>
<Expander Header="Expander" IsExpanded="True">
<StackPanel Background="LightGreen">
<ComboBox SelectedIndex="1" Margin="5">
<ComboBoxItem Content="あああ"/>
<ComboBoxItem Content="いいい"/>
<ComboBoxItem Content="うううううう"/>
</ComboBox>
<ListBox SelectedIndex="0" Height="60" Margin="5">
<ListBoxItem Content="かかか"/>
<ListBoxItem Content="きききき"/>
<ListBoxItem Content="くくく"/>
<ListBoxItem Content="けけけ"/>
<ListBoxItem Content="こここここ"/>
</ListBox>
</StackPanel>
</Expander>
<!-- CheckedListBox -->
<ListBox SelectedIndex="1" Height="55" Margin="5">
<CheckBox Content="さささ"/>
<CheckBox Content="ししし"/>
<CheckBox Content="すすすすす" IsChecked="True"/>
</ListBox>
</StackPanel>
</Window>
■ RadioButtonコントロールでよく使いそうなプロパティ
プロパティ | カテゴリ | 備考 |
---|---|---|
Content | 共通 | ラジオボタンの内容 |
GroupName | 共通 | グループ名 |
IsChecked | 共通 | 選択状態 |
■ ComboBoxコントロールでよく使いそうなプロパティ
プロパティ | カテゴリ | 備考 |
---|---|---|
IsEditable | 共通 | 編集可能かどうか |
Items | 共通 | 選択肢 |
SelectedIndex | 共通 | 選択項目のインデックス。0が先頭。 |
■ ListBoxコントロールでよく使いそうなプロパティ
プロパティ | カテゴリ | 備考 |
---|---|---|
Items | 共通 | 選択肢 |
SelectedIndex | 共通 | 選択項目のインデックス。0が先頭。 |
SelectionMode | その他の指定 | 単一選択や複数選択の設定 |
実行してみます。
MainWindowの「次の画面」ボタンを押してWindow1を表示します。
Expanderをクリックして中身を閉じることができます。
おしまい
■参考サイト
- Label クラス - MSDN
- TextBox クラス - MSDN
- TextBlock クラス - MSDN
- CheckBox クラス - MSDN
- ToggleButton クラス - MSDN
- GroupBox クラス - MSDN
- RadioButton クラス - MSDN
- Expander クラス - MSDN
- ComboBox クラス - MSDN
- ListBox クラス - MSDN