1

私のプログラムには、「SelectionChanged」イベントを持つリストビューが含まれています。リスト ビューで選択した項目を変更するときに、それに関連する特定のオプションを含む新しいウィンドウを開きたいと考えています。しかし、問題は、新しいウィンドウが一瞬表示され、メイン ウィンドウの後ろに隠れてしまうことです。これは私のコードの一部です:

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

また、開始時に 2 番目のウィンドウにフォーカス機能を含めました。どうすればこの問題を解決できますか?

4

2 に答える 2

4

イベントが発生している間にフォーカスを変更しようとするのはしばしば面倒です。ここにあります。PostSelectionChanged イベントが必要ですが、それは利用できません。Dispatcher.BeginInvoke() は、すべてのイベント処理が完了した後にターゲットを実行できます。これはあなたの問題を解決します:

private void display_SelectionChanged(object sender, SelectionChangedEventArgs e) {
    Dispatcher.BeginInvoke(new Action(() => {
       var editwindow = new EditWindow();
       editwindow.Show();
    }));
}
于 2013-07-28T21:14:14.867 に答える
0

Activate() 関数を使用します。

editWindow.Activate();
于 2013-07-28T22:37:32.337 に答える