6

タブ コントロールといくつかのタブ項目があります。イベントを正常にリッスンし、SelectionChanged興味のあるタブが現在選択されているタブであるかどうかを確認しています。

このコード (以下) を使用し、デバッガーをステップ実行すると、分岐ロジックが設計どおりに機能することがわかります。ただし、私が抱えている問題はtxt.Focus()、正しいタブ項目が表示された後、フォーカスがテキスト ボックスにないため、何かがこの呼び出しをオーバーライドしていることです。

private void tabMain_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    // exact same behavior with and without this line
    e.Handled = true;

    if (e.AddedItems.Contains(usrTab))
    {
        txtusr.Focus();
    }
    else if (e.AddedItems.Contains(svcTab))
    {
        txtsvc.Focus();
    }
}

txtusr.Focus()ボタン イベント ハンドラーを挿入すると、期待どおりにフォーカスされます。

これは、メソッドが呼び出されたときに tabitem コンテンツがロードされていないことに関係していると思われますが、それ.Focus()を修正する方法がわかりません。

4

1 に答える 1

12

Dispatcher.BeginInvoke 内に .Focus() 呼び出しを配置し​​てみてください。

Dispatcher.BeginInvoke(new Action(() => { txtsvc.Focus(); }));
于 2010-10-19T18:39:42.463 に答える