2013-07-28 4 views
1

Моя программа содержит список с событием «SelectionChanged». Когда я изменяю выбранный элемент в представлении списка, я хочу открыть новое окно с конкретными параметрами, связанными с ним. Но проблема в том, что новое окно появляется на мгновение, и оно скрывается за главным окном. Это часть моего кода:C# Фокусировка нового окна

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

Я также включить функцию фокусировки во втором окне, когда он инициировал. Как я мог решить эту проблему?

+1

Какой GUI инструментарий делает это относится? WPF? WinForms? Добавьте соответствующий тег. –

ответ

4

Попытка изменить фокус пока событие уволено часто хлопотно, оно здесь. Вам понадобится событие PostSelectionChanged, но оно недоступно. Вы можете создать свой собственный, хотя Dispatcher.BeginInvoke() может запустить целевой объект после завершения обработки события. Это решает проблему:

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

Используйте функцию Activate():

editWindow.Activate(); 
Смежные вопросы