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()一个按钮事件处理程序,它会完全按照我的预期聚焦。

我怀疑这与.Focus()调用方法时未加载 tabitem 内容有关,但我不确定如何修复它。

4

1 回答 1

12

尝试将 .Focus() 调用放在 dispatcher.BeginInvoke 中。

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