TextBoxは、テキストが編集可能なコンポーネントで、UI上で、テキストを入力したい場合に使用します。
同じTextBoxでも、FormアプリとWPFアプリでは、異なる実装がされている事に注意してください。このページでは、WPFのTextBoxを扱います。
TextBoxを追加する
TextBoxコントロールは、ほとんどのWPFコンポーネントと同じように、デザイナのツールボックスから配置することも、xamlコードを直接入力することもできます。C#コードで生成することもできると思いますが、動的にTextBoxコンポーネントを生成する必要があるUIは、おそらく存在しないと思います。
ツールボックスから、TextBoxを追加
デザインにドロップすると追加されます。
xamlコードで記述する
<Window x:Class="TextBox01.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="200" Width="350">
<Grid>
<TextBox Name="tb"/>
</Grid>
</Window>
入力スタイルを制御する属性
xamlコードでは、TextBoxタグ内で、属性を指定して、TextBoxの挙動を制御できます。
属性 | 挙動 |
---|---|
AcceptsReturn | Enter キーを入力したとき、改行するか(true)、しない(false, 既定値)かを指定します。 |
AcceptsTab | Tab キーを入力したとき、Tab文字が挿入されるか(true)、しない(false, 既定値)かを指定します。 |
AllowDrop | ドラッグアンドドロップ操作を有効にするか(true)、しない(false, 既定値)かを指定します。 |
FontFamily | 使用するフォントを指定、あるいは、取得します。 |
FontSize | 使用するフォントの大きさを指定、あるいは、取得します。 |
FontStyle | 使用するフォント・スタイルを指定、あるいは、取得します。 |
FontWeight | 使用するフォントの太さを指定、あるいは、取得します。 |
HorizontalScrollBarVisibility | 水平スクロール バーが表示されるかどうかを示す値を取得または設定します。(Auto, Disabled, Hidden(既定値), Visible) |
VerticalScrollBarVisibility | 垂直スクロール バーが表示されるかどうかを示す値を取得または設定します。(Auto, Disabled, Hidden(既定値), Visible) |
TextWrapping | コントロール内で、テキストを折り返す(Wrap)かどうかを指定します。(NoWrap, Wrap, WrapWithOverflow) |
属性を使用して挙動の異なるTextBoxを作成する
TextBoxコンポーネントは、属性を追加するだけで様々な挙動をするTextBoxを作成できます。
-
複数行の入力ができるTextBoxコントロールを作成するには、TextWrapping属性をWrapに設定し、AcceptsReturn属性をtrueに設定し、VerticalScrollBarVisibility属性をVisibleに設定します。
-
TextBoxを読み取り専用にするには、 IsReadOnly属性を指定します。IsReadOnlyの既定の値は、falseです。IsReadOnly属性をtrueに設定するとTextBoxは、実行時に書き込むことができません。
TextBox内のテキストの取得と変更
テキストを編集可能なTextBoxのようなコントロールは、プログラム実行時にテキストをユーザーから取得するために使用されます。そのため、頻繁に、C#コードから、TextBoxの値を取得する、そして、TextBoxの値を変更することになります。
TextBoxのイベントを利用する[C# WPF]
TextBoxの入力をイベントを使って制御することで、より複雑な動作を行うことができます。
PreviewTextInputイベントを使って、TextBoxに値を入力する前に、正規表現を使って、入力された文字が数字であることを確認します。入力された値が、数字の場合のみ、値が入力されます。
xaml UI
TextBoxのUI動作を確認するために使えるUIデザインの例です。
C# WPF TextBoxで、ウォーターマック(プレースホルダー)を実現する
ウォーターマック(プレースホルダー)は、TextBox内に表示する、テキストボックスに入力する内容を示す、薄く表示される文字の説明です。TextBoxには、この機能はありません。
そこで、いろいろな方法で、ウォーターマック(プレースホルダー)を実現する方法が紹介されています。