2012-06-19 2 views
0

Название в значительной степени говорит обо всем, но в основном у меня есть основное родительское окно, которое иногда открывает дочерние окна. Прямо сейчас можно выбрать один из дочерних окон на панели задач Windows 7, и только это окно будет перенесено на передний план. Что бы я хотел, чтобы найти способ связать родительское окно с этой командой, так что в любое время, когда дочернее окно будет выбрано, родитель автоматически будет выведен на передний план.Принесите родительское окно вперед, когда дочернее окно выбрано из панели задач

Я пытался использовать обе команды Focus() и Topmost = true внутри GotFocus дочерних окон»event handler, but neither seemed to make a difference. I also tried the BringIntoView()` метод, но опять-таки, нет радости. Кто-нибудь видел это раньше или знает способ реализовать это?

Это то, что я пробовал до сих пор. Сначала логика в настройке mainWindow, а затем сразу же установка дочернего окна - это то, что я все еще хочу, чтобы дочернее окно имело фокус, но я хочу, чтобы mainWindow находился над любыми другими запущенными программами (например, Excel, VS и т. Д.).

private void Window_GotFocus(object sender, RoutedEventArgs e) 
    { 
     var mainWindow = Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is MainWindow) as MainWindow; 

     mainWindow.Topmost = true; 
     this.Topmost = true; 

    } 
+0

Попробуйте активировать() на окне –

+0

Просто попробовал, никаких изменений. –

ответ

2

Я думаю, что вы слушаете неправильное событие, которое будет уведомляться при выборе вашего окна. Подпишитесь на событие Activated в своем дочернем окне, которое должно сообщать вам, когда ваше окно выбрано на панели задач. Оттуда вы можете активировать() свой MainWindow.

Кроме того, я думаю, что если вы установите родительское окно в качестве владельца дочернего окна, вы получите это поведение автоматически.

+2

Я еще не знаю о 'Activated', но настройка' MainWindow' как владельца была в точности правильной. Я знал, что это возможно, просто не может поставить терминологию. Спасибо, что запустили мой мозг. :) –