single.php

C# WinUI3で[AutoSuggestBox]の入力時に日本語変換を無効にする方法

C# WinUI 3アプリを作っていく途中で、調べたことを忘録的に投稿します。今回はWinUI3プロジェクトで[AutoSuggestBox]コントロールに入力する際に、英数字入力にする方法です。

既定値はIME変換可能

[AutoSuggestBox]コントロールは、キーワードから用意した候補リストを表示してユーザーに選択させる表示が可能です。

こんな感じで、入力したテキストに該当する候補を一覧に表示して、ユーザーに選択する機能がアプリに追加できます。

入力するテキストボックスは[TextBox]コントロールになっているので、既定値ではIMEによる[かな漢字変換]が可能になっています。

アプリによっては、英数字のみで入力して欲しい場合があります。

フォーカス時に日本語入力を無効

UWPやWinFormなどで用意されている[TextBox]コントロールには[ImeMode]プロパティがあり、IMEの挙動を変更できましたが、WinUI3の[TextBox]コントロールには、実装がありません。

WinUI3の場合は、[InputScope]で変更を行います。

具体的には[TextBox]コントロール(例では[AutoSuggestBox]コントロール)の[GotFocus]イベントを追加して、イベント内に次のコードを追加します。

private void AutoSuggestBox_GotFocus(object sender, RoutedEventArgs e)
{
    InputScope inputScope = new InputScope();
    InputScopeName scopeName = new InputScopeName();
    scopeName.NameValue = InputScopeNameValue.Password;
    inputScope.Names.Add(scopeName);
    ((TextBox)e.OriginalSource).InputScope = inputScope;
}

[InputScopeNameValue]に[Password]を設定して入力を英数字のみに限定しています。

InputScopeNameValue 列挙値]には、パスワードの他にもIMEを有効にする[Hiragana]などの値が用意されています。

まとめ

今回はWinUI3プロジェクトで[AutoSuggestBox]コントロールに入力する際に、英数字入力に限定する方法について紹介しました。

[AutoSuggestBox]コントロールの入力する部分は[TextBox]コントロールが利用されているため[InputScope]プロパティを利用して入力時のIMEを制御できます。

WinUI 3で[AutoSuggestBox]コントロールの入力時にIMEを無効にしたい人の参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です