5

私のプログラムには、コンテンツ プレゼンターを使用してウィンドウにデータを表示するユーザー コントロールがあります。textBox起動時にウィンドウ内の特定のものにカーソルフォーカスを設定したいだけです。

通常、次のように、ウィンドウの分離コードを使用してこれを行います。textBox.Focus();

ただし、textBoxはユーザー コントロールで定義されており、同じようには機能しないようです。これまでのところ、ユーザー コントロールのコード ビハインドで上記と同じ方法を試しました。

なぜこれが機能しないのですか?textBoxがユーザー コントロールで定義されている場合、フォーカスを設定するにはどうすればよいですか?

私が試したこと....:

ユーザーコントロール:

public UserControl()
{
    InitializeComponent();

    FocusManager.SetFocusedElement(this, textBox);
}

ユーザーコントロール:

public UserControl()
{
    InitializeComponent();

    textBox.Focusable = true;
    Keyboard.Focus(textBox);
}
4

3 に答える 3

3

少し遅れましたが、それが私にとって本当にうまくいったのは

public UserControl()
    {
        InitializeComponent();

        Dispatcher.BeginInvoke(new System.Action(() => { Keyboard.Focus(TextBox); }),
                               System.Windows.Threading.DispatcherPriority.Loaded);
    }
于 2016-12-27T07:53:34.980 に答える
2

LoadedのまたはInitializedイベントでフォーカスを設定してみることができますUser control。例えば:

private void MyWpfControl_Load(object sender, EventArgs e)
{
    textBox.Focusable = true;
    Keyboard.Focus(textBox);
}

情報:ロードされたイベントまたは初期化されたイベント

于 2013-10-17T18:41:07.563 に答える