C#新窗口焦点

时间:2013-07-28 20:52:31

标签: c# wpf visual-c#-express-2010

我的程序包含带有“SelectionChanged”事件的列表视图。当我在列表视图中更改所选项目时,我想打开一个新窗口,其中包含与其相关的特定选项。但问题是新窗口出现片刻,它隐藏在主窗口后面。 这是我的代码的一部分:

private void display_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        var editwindow = new EditWindow();
        editwindow.Show();
        editwindow.Focus();
    }

启动后,我还在第二个窗口中包含了Focus功能。我怎么能解决这个问题?

2 个答案:

答案 0 :(得分:4)

尝试在事件被触发时更改焦点通常很麻烦,就在这里。你需要一个PostSelectionChanged事件但是不可用。您可以创建自己的,Dispatcher.BeginInvoke()可以在完成所有事件处理后运行目标。这解决了您的问题:

private void display_SelectionChanged(object sender, SelectionChangedEventArgs e) {
    Dispatcher.BeginInvoke(new Action(() => {
       var editwindow = new EditWindow();
       editwindow.Show();
    }));
}

答案 1 :(得分:0)

使用Activate()函数:

editWindow.Activate();