Подтвердить что ты не робот

Как предотвратить появление новой формы WPF?

Я написал простую программу MSN, которая будет отправлять и получать сообщения с помощью WCF. Основная форма содержит текстовое поле для ввода сообщения, которое нужно отправить. В фоновом режиме приложение опроса сервера каждые несколько секунд для новых сообщений. Когда новое сообщение получено, для его отображения открывается новое окно. Это нужно сделать в потоке пользовательского интерфейса, используя класс Dispatcher.

Проблема заключается в том, что при отображении нового окна фокус смещается в сторону от TextBox, так что ввод текста прерывается. Это очень раздражает! В MSN Messenger можно продолжать вводить собственное сообщение при его получении. Как это делается?

В качестве обходного пути я откладываю всплывающее окно с новым сообщением, в то время как TextBox имеет фокус, но должен быть лучший способ!

4b9b3361

Ответ 1

Ответ прост: поскольку формы WPF.NET 3.5 SP1 имеют свойство ShowActivated. Установите это значение в false, и любая отмеченная таким образом форма не будет больше крать фокус!

Ответ 2

В моем приложении мне нужно показать окно уведомлений поверх всех других окон, в то время как мой MainWindow сведен к минимуму, но без кражи фокуса.

Итак, я просто делаю это:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    this.Topmost = true;
    this.Topmost = false;
}

Ответ 3

Вы можете установить для свойства Focusable окна значение false.