TextBox の概要

TextBox クラスでは、書式設定されていないテキストを表示または編集できます。 TextBox の一般的な用途は、フォームで書式設定されていないテキストを編集することです。 たとえば、ユーザーの名前、電話番号などの入力を求めるフォームでは、テキスト入力用に TextBox コントロールを使用します。 このトピックでは、TextBox クラスについて紹介し、Extensible Application Markup Language (XAML) と C# の両方でそれを使用する方法を例と共に解説しています。

TextBox か RichTextBox か

TextBoxRichTextBox のどちらを使用しても、ユーザーはテキストを入力できますが、この 2 つのコントロールは異なるシナリオで使用されます。 TextBox は、必要なシステム リソースが RichTextBox より少ないため、プレーンテキストのみを編集する必要がある場合に理想的です (つまりフォームでの使用)。 RichTextBox は、書式設定されたテキスト、イメージ、テーブルなどのサポート対象コンテンツを編集する必要がある場合に適しています。 たとえば、書式設定やイメージなどを必要とするドキュメント、記事、またはブログを編集する場合は、RichTextBox を使用することをお勧めします。 次の表は、TextBoxRichTextBox の主な機能をまとめたものです。

Control リアルタイム スペル チェック コンテキスト メニュー ToggleBold (Ctr + B) のような書式設定コマンド イメージ、段落、テーブルのような FlowDocument コンテンツ
TextBox はい 有効 いいえ いいえ。
RichTextBox はい はい はい (「RichTextBox の概要」を参照) はい (「RichTextBox の概要」を参照)

注意

TextBox では ToggleBold (Ctrl + B) のような書式設定関連の編集コマンドはサポートされていませんが、MoveToLineEnd などの多くの基本的なコマンドは両方のコントロールでサポートされています。 詳細については、「EditingCommands」を参照してください。

TextBox でサポートされる機能については、以下の各セクションで説明します。 RichTextBox の詳細については、「RichTextBox の概要」を参照してください。

リアルタイム スペル チェック

TextBox または RichTextBox で、リアルタイム スペル チェックを有効にすることができます。 スペル チェックをオンにすると、スペル ミスの語句の下に赤色の線が表示されます (下図を参照)。

Textbox with spell-checking

スペル チェックを有効にする方法については、「テキスト編集コントロールでスペル チェックを有効にする」を参照してください。

コンテキスト メニュー

既定では、TextBoxRichTextBox の両方に、ユーザーがコントロール内を右クリックしたときに表示されるコンテキスト メニューがあります。 コンテキスト メニューでは、切り取り、コピー、または貼り付けをできます (下図を参照)。

TextBox with context menu

既定の動作をオーバーライドする独自のカスタム コンテキスト メニューを作成できます。 詳細については、「TextBox でカスタム コンテキスト メニューを使用する」を参照してください。

TextBox の作成

TextBox は、1 行の高さにしたり、複数行で構成したりできます。 単一行の TextBox は、少量のプレーン テキストの入力に最適です (たとえば、「名前」、「電話番号」などのフォームへの入力)。 次の例では、単一行の TextBox を作成する方法を示します。

<Page  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <StackPanel>
    <TextBox Width="200" MaxLength="100" />
  </StackPanel>
</Page>

ユーザーが複数行のテキストを入力できる TextBox を作成することもできます。 たとえば、ユーザーの経歴の入力を求めるフォームの場合、複数行のテキストをサポートする TextBox を使用できます。 次の例では、Extensible Application Markup Language (XAML) を使用して、複数行のテキストに合わせて自動的に拡張する TextBox コントロールを定義する方法を示します。

<TextBox
  Name="tbMultiLine"
  TextWrapping="Wrap"
  AcceptsReturn="True"
  VerticalScrollBarVisibility="Visible"
>
  This TextBox will allow the user to enter multiple lines of text.  When the RETURN key is pressed, 
  or when typed text reaches the edge of the text box, a new line is automatically inserted.
</TextBox>

TextWrapping 属性を Wrap に設定すると、テキストは TextBox コントロールの端に達すると新しい行に折り返され、必要に応じて新しい行の空間が含まれるように TextBox コントロールが自動的に拡張されます。

AcceptsReturn 属性を true に設定すると、RETURN キーが押されると新しい行が挿入され、必要に応じて新しい行の空間が含まれるようにもう一度 TextBox が自動的に拡張されます。

VerticalScrollBarVisibility 属性によってスクロール バーが TextBox に追加されるため、TextBox がこれを囲むフレームまたはウィンドウのサイズよりも大きくなった場合、スクロール バーを使用して TextBox の内容をスクロールできます。

TextBox の使用に関係するさまざまなタスクの詳細については、「方法のトピック」を参照してください。

内容が変更されたときに検出する

通常、TextBox または RichTextBox のテキストが変更されたときには常に、予想されるような KeyDown ではなく、TextChanged イベントを使用して検出する必要があります。 例については、「TextBox のテキストがいつ変更されたかを検出する」を参照してください。

関連項目