入力

.NET マルチプラットフォーム アプリ UI (.NET MAUI) Entry を使用すると、1 行のテキストを入力および編集できます。 さらに、 は Entry パスワード フィールドとして使用できます。

Entry は次の特性を定義します。

  • CharacterSpacingdoubleの は、入力したテキスト内の文字間の間隔を設定します。
  • ClearButtonVisibilityClearButtonVisibilityの は、クリア ボタンを表示するかどうかを制御します。これにより、ユーザーはテキストをクリアできます。 このプロパティの既定値は、クリア ボタンが表示されないようにします。
  • CursorPositionintの は、エントリ内でのカーソルの位置を定義します。
  • FontAttributesの型 FontAttributesで、テキスト のスタイルを決定します。
  • FontAutoScalingEnabledboolの は、オペレーティング システムで設定されたスケーリング設定をテキストに反映するかどうかを定義します。 このプロパティの既定値は true です。
  • FontFamilystringの は、フォント ファミリを定義します。
  • FontSizedoubleの は、フォント サイズを定義します。
  • KeyboardKeyboardの 。 は、テキストを入力するときに表示される仮想キーボードを指定します。
  • HorizontalTextAlignmentTextAlignmentの は、テキストの水平方向の配置を定義します。
  • IsPasswordboolの は、入力されたテキストを視覚的に隠す必要があるかどうかを指定します。
  • IsTextPredictionEnabledboolの では、テキスト予測と自動テキスト修正を有効にするかどうかを制御します。
  • Placeholderstringの は、コントロールが空のときに表示されるテキストを定義します。
  • PlaceholderColorColorの は、プレースホルダー テキストの色を定義します。
  • ReturnCommandICommandの は、戻りキーが押されたときに実行されるコマンドを定義します。
  • ReturnCommandParameterobjectの は、 のパラメーターを ReturnCommand指定します。
  • ReturnTypeReturnTypeの 。 は、戻りボタンの外観を指定します。
  • SelectionLengthintの は、エントリ内で選択したテキストの長さを表します。
  • Textstringの は、エントリに入力されたテキストを定義します。
  • TextColorColorの は、入力したテキストの色を定義します。
  • VerticalTextAlignmentTextAlignmentの は、テキストの垂直方向の配置を定義します。

これらのプロパティは、BindableProperty オブジェクトが基になっています。つまり、これらは、データ バインディングの対象にすることができ、スタイルを設定できます。

さらに、 Entry は イベントを Completed 定義します。これは、ユーザーが 戻りキーを使用して 内のテキストを Entry 最終処理するときに発生します。

Entry は、 クラスから InputView 派生し、そこから次のプロパティを継承します。

  • IsReadOnlyboolの は、ユーザーがテキストを変更できないようにするかどうかを定義します。 このプロパティの既定値は false です。
  • IsSpellCheckEnabledの型 boolは、スペル チェックを有効にするかどうかを制御します。
  • MaxLengthintの は、入力の最大長を定義します。
  • TextTransformの型 TextTransformは、入力されたテキストの大文字と小文字を指定します。

これらのプロパティは、BindableProperty オブジェクトが基になっています。つまり、これらは、データ バインディングの対象にすることができ、スタイルを設定できます。

さらに、 InputView では、内の TextChanged テキストが変更されたときに発生するイベントを定義します EntryTextChangedEventArgsイベントに付随TextChangedする オブジェクトにはNewTextValue、 プロパティと OldTextValue プロパティがあり、それぞれ新しいテキストと古いテキストを指定します。

Entryフォントを指定する方法については、「 フォント」を参照してください。

エントリを作成する

次の例は、 を作成する方法を Entry示しています。

<Entry x:Name="entry"
       Placeholder="Enter text"
       TextChanged="OnEntryTextChanged"
       Completed="OnEntryCompleted" />

これに相当する C# コードを次に示します。

Entry entry = new Entry { Placeholder = "Enter text" };
entry.TextChanged += OnEntryTextChanged;
entry.Completed += OnEntryCompleted;

次のスクリーンショットは、Android での結果 Entry を示しています。

Android の基本的なエントリのスクリーンショット。

入力されたテキストにアクセスするには、 プロパティを Text 読み取り、 TextChanged イベントと Completed イベントによってテキストが変更または完了したことが通知されます。

イベントはTextChanged、 内Entryのテキストが変更されたときに発生し、 プロパティと TextChangedEventArgs プロパティを使用して、変更の前後にテキストをOldTextValueNewTextValue提供します。

void OnEntryTextChanged(object sender, TextChangedEventArgs e)
{
    string oldText = e.OldTextValue;
    string newText = e.NewTextValue;
    string myText = entry.Text;
}

イベントは Completed 、ユーザーがキーボードの戻りキーを押すか、Windows の Tab キーを押して入力を終了したときに発生します。 イベントのハンドラーは、汎用イベント ハンドラーです。

void OnEntryCompleted(object sender, EventArgs e)
{
   string text = ((Entry)sender).Text;
}

イベントがCompleted発生すると、 プロパティでReturnCommand指定された がICommand実行され、 object プロパティによってReturnCommandParameter指定された が にReturnCommand渡されます。

Note

VisualElement継承階層にある Entry クラスにはFocused、 イベントと Unfocused イベントもあります。

文字間隔を設定する

プロパティを値に設定CharacterSpacingすることで、 にEntry文字間隔をdouble適用できます。

<Entry ...
       CharacterSpacing="10" />

結果として、 によって Entry 表示されるテキスト内の文字は、デバイスに依存しない単位の間隔 CharacterSpacing が離れています。

Note

プロパティのCharacterSpacing値は、 プロパティと Placeholder プロパティによって表示されるテキストにText適用されます。

入力長を制限する

プロパティを MaxLength 使用して、 に対して許可される入力長を Entry制限できます。 このプロパティは正の整数に設定する必要があります。

<Entry ...
       MaxLength="10" />

MaxLengthプロパティ値 0 は入力が許可されないことを示し、 のint.MaxValue既定値である の値Entryは、入力できる文字数に有効な制限がないことを示します。

カーソル位置とテキスト選択の長さを設定する

プロパティを CursorPosition 使用して、 プロパティに格納されている文字列に次の文字を挿入する位置を Text 取得または設定できます。

<Entry Text="Cursor position set"
       CursorPosition="5" />

プロパティの CursorPosition 既定値は 0 です。これは、 の先頭 Entryにテキストが挿入されることを示します。

さらに、 プロパティを SelectionLength 使用して、 内 Entryのテキスト選択の長さを取得または設定できます。

<Entry Text="Cursor position and selection length set"
       CursorPosition="2"
       SelectionLength="10" />

プロパティの SelectionLength 既定値は 0 で、テキストが選択されていないことを示します。

クリア ボタンを表示する

プロパティを ClearButtonVisibility 使用すると、 がクリア ボタンを Entry 表示するかどうかを制御できます。これにより、ユーザーはテキストをクリアできます。 このプロパティは、ClearButtonVisibility 列挙メンバーに設定する必要があります。

  • Never は、クリア ボタンが表示されないようにすることを示します。 これは、ClearButtonVisibility プロパティの既定値です。
  • WhileEditing は、フォーカスとテキストがある状態で、クリア ボタンが に Entry表示されることを示します。

次の例は、 プロパティの設定を示しています。

<Entry Text=".NET MAUI"
       ClearButtonVisibility="WhileEditing" />

次のスクリーンショットは、[ Entry クリア] ボタンが有効になっている Android の を示しています。

Android の [クリア] ボタンを含む基本的なエントリのスクリーンショット。

テキストの変換

ではEntry、 プロパティを列挙体の値に設定TextTransformすることで、 プロパティにText格納されているテキストの大文字と小文字をTextTransform変換できます。 この列挙には、次の 4 つの値があります。

  • None は、テキストが変換されていないことを示します。
  • Default は、プラットフォームの既定の動作が使用されることを示します。 これは、TextTransform プロパティの既定値です。
  • Lowercase は、テキストが小文字に変換されることを示します。
  • Uppercase は、テキストが大文字に変換されることを示します。

次の例は、テキストを大文字に変換する方法を示しています。

<Entry Text="This text will be displayed in uppercase."
       TextTransform="Uppercase" />

テキストエントリを隠す

Entry は、 に IsPassword 設定されている場合に、入力されたテキストを視覚的に隠す プロパティを true提供します。

<Entry IsPassword="true" />

次のスクリーンショットは、 Entry 入力が隠されている を示しています。

IsPassword が true に設定されている基本的なエントリのスクリーンショット。

キーボードをカスタマイズする

ユーザーが と対話 Entry するときに表示される仮想キーボードは、 プロパティを Keyboard 使用してプログラムによって、 クラスの次のいずれかのプロパティに Keyboard 設定できます。

  • Chat - 絵文字が使えるテキスト メッセージや場所に使います。
  • Default - 既定のキーボード。
  • Email - 電子メール アドレスを入力するときに使用します。
  • Numeric - 数値を入力するときに使用します。
  • Plain - KeyboardFlags を指定しないで、テキストを入力するときに使用します。
  • Telephone - 電話番号を入力するときに使用します。
  • Text - テキストを入力するときに使用します。
  • Url – ファイル パス & Web アドレスの入力に使用されます。

次の例は、 プロパティの設定を Keyboard 示しています。

<Entry Keyboard="Chat" />

Keyboard クラスには、大文字の設定、スペルチェック、および単語補完候補の動作を指定することで、キーボードをカスタマイズするために使用できる Create ファクトリ メソッドもあります。 KeyboardFlags 列挙値がメソッドへの引数として指定され、カスタマイズされた Keyboard が返されます。 KeyboardFlags 列挙体には次の値が含まれます。

  • None - キーボードに機能は追加されません。
  • CapitalizeSentence - 入力された各文の最初の単語の最初の文字が自動的に大文字になることを示します。
  • Spellcheck - 入力したテキストに対してスペル チェックが実行されることを示します。
  • Suggestions - 入力したテキストに対して単語補完が提供されることを示します。
  • CapitalizeWord - 各単語の最初の文字が自動的に大文字になることを示します。
  • CapitalizeCharacter - すべての文字が自動的に大文字になることを示します。
  • CapitalizeNone - 大文字の自動設定を行わないことを示します。
  • All - 入力したテキストに対して、スペルチェック、単語補完、および文への大文字の設定が行われることを示します。

次の XAML コード例は、既定の Keyboard をカスタマイズして、単語補完を提供し、入力したすべての文字を大文字に設定する方法を示しています。

<Entry Placeholder="Enter text here">
    <Entry.Keyboard>
        <Keyboard x:FactoryMethod="Create">
            <x:Arguments>
                <KeyboardFlags>Suggestions,CapitalizeCharacter</KeyboardFlags>
            </x:Arguments>
        </Keyboard>
    </Entry.Keyboard>
</Entry>

これに相当する C# コードを次に示します。

Entry entry = new Entry { Placeholder = "Enter text here" };
entry.Keyboard = Keyboard.Create(KeyboardFlags.Suggestions | KeyboardFlags.CapitalizeCharacter);

戻りキーをカスタマイズする

にフォーカスがあるときに表示される Entry 仮想キーボードの戻りキーの外観は、 プロパティを ReturnType 列挙体の ReturnType 値に設定することでカスタマイズできます。

  • Default – 特定のリターン キーが必要なく、プラットフォームの既定値が使用されることを示します。
  • Done – "完了" の戻りキーを示します。
  • Go – "Go" 戻りキーを示します。
  • Next – "Next" 戻りキーを示します。
  • Search – "検索" 戻りキーを示します。
  • Send – "送信" 戻りキーを示します。

次の XAML の例は、戻り値キーを設定する方法を示しています。

<Entry ReturnType="Send" />

Note

リターン キーの正確な外観は、プラットフォームによって異なります。 iOS では、戻りキーはテキストベースのボタンです。 ただし、Android と Windows では、戻りキーはアイコンベースのボタンです。

戻りキーが押されると、イベントがCompleted発生し、 プロパティでReturnCommand指定されたがICommand実行されます。 さらに、 プロパティでReturnCommandParameter指定されたは、objectパラメーターとして にICommand渡されます。 コマンドの詳細については、「 Commanding」を参照してください。

スペル チェックを有効または無効にする

プロパティは IsSpellCheckEnabled 、スペル チェックを有効にするかどうかを制御します。 既定では、 プロパティは に true設定されています。 ユーザーがテキストを入力すると、スペル ミスが示されます。

ただし、ユーザー名の入力など、一部のテキスト入力シナリオでは、スペル チェックは否定的なエクスペリエンスを提供し、 プロパティを IsSpellCheckEnabled に設定して無効にする false必要があります。

<Entry ... IsSpellCheckEnabled="false" />

Note

プロパティが IsSpellCheckEnabledfalse設定されていて、カスタム キーボードが使用されていない場合、ネイティブスペル チェックは無効になります。 ただし、 などのKeyboard.Chatスペル チェックを無効にする が設定されている場合KeyboardIsSpellCheckEnabled プロパティは無視されます。 したがって、 プロパティを使用して、明示的に無効にする の Keyboard スペル チェックを有効にすることはできません。

テキスト予測を有効または無効にする

プロパティは IsTextPredictionEnabled 、テキスト予測と自動テキスト修正を有効にするかどうかを制御します。 既定では、 プロパティは に true設定されています。 ユーザーがテキストを入力すると、単語の予測が表示されます。

ただし、ユーザー名の入力、テキスト予測、自動テキスト修正などの一部のテキスト入力シナリオでは、負のエクスペリエンスが提供され、 プロパティを IsTextPredictionEnabled に設定して無効にする false必要があります。

<Entry ... IsTextPredictionEnabled="false" />

Note

プロパティが IsTextPredictionEnabledfalse設定されていて、カスタム キーボードが使用されていない場合、テキスト予測と自動テキスト修正は無効になります。 ただし、テキスト予測を Keyboard 無効にする が設定されている場合、 IsTextPredictionEnabled プロパティは無視されます。 したがって、 プロパティを使用して、明示的に無効にする の Keyboard テキスト予測を有効にすることはできません。

テキスト入力を禁止する

ユーザーは、 プロパティtrueを に設定することで、 内のEntryテキストをIsReadOnly変更できないようにすることができます。

<Entry Text="User input won't be accepted."
       IsReadOnly="true" />

Note

プロパティは IsReadonly 、 の Entry外観を灰色に変更する プロパティとは異なり IsEnabled 、 の外観を Entry 変更しません。