Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / MessageBox не принимает фокус / 9 сообщений из 9, страница 1 из 1
06.04.2016, 11:04
    #39209032
monstrilla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MessageBox не принимает фокус
Сценарий. Становимся на текстбокс, жмем на ввод, появляется меседжбокс. Нажимаем еще раз на ввод в надежде, что месседжбокс закроется - он не закрывается. Вместо этого вызывается обработчик _textBox_OnKeyUp . То есть, получается, меседжбокс не получает фокус, фокус остается на текстбоксе. Как заставить месседжбокс закрываться по вводу, то есть работать нормально?


Код: xml
1.
2.
3.
4.
5.
6.
7.
<Grid>
    <TextBox Name="_textBox"
        Width="100"
        Height="30"
        Background="OrangeRed"
        KeyUp="_textBox_OnKeyUp"/>
</Grid>




Код: c#
1.
2.
3.
4.
5.
6.
7.
private void _textBox_OnKeyUp(object sender, KeyEventArgs e)
{
    if (e.Key != Key.Enter)
        return;
 
    MessageBox.Show("Bla-bla");
}
...
Рейтинг: 0 / 0
06.04.2016, 11:13
    #39209044
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MessageBox не принимает фокус
У меня ситуация не воспроизводится.

Жму энтер на текстбоксе - при отпускании появляется мессаджбокс. Его можно закрыть пробелом или мышью. Если же еще раз нажать энтер, то на фазе нажатия энтера мессаджбокс закроется, а на фазе отпускания - откроется еще один. То есть не вижу никаких противоречий и с фокусом все в порядке.
...
Рейтинг: 0 / 0
06.04.2016, 11:26
    #39209059
monstrilla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MessageBox не принимает фокус
Shocker.Pro,

авторЕсли же еще раз нажать энтер, то на фазе нажатия энтера мессаджбокс закроется, а на фазе отпускания - откроется еще один. То есть не вижу никаких противоречий и с фокусом все в порядке.

Да, действительно, так и есть. Мне посоветовали использовать KeyDown вместо KeyUp и все заработало. Вы написали почему не работает с KeyUp, а вот почему стало работать с KeyDown не совсем понятно. При однократном нажатии на ентер, обработчик KeyDown не вызывается, а если ентер удерживать - вызывается много раз.
...
Рейтинг: 0 / 0
06.04.2016, 11:34
    #39209071
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MessageBox не принимает фокус
MessageBox.Show нужно запустить через Dispatcher.BeginInvoke с приоритетом большим или равным Input
Код: c#
1.
2.
3.
4.
5.
6.
7.
  
            DispatcherOperationCallback func = (p) =>
            {
                MessageBox.Show("Test");
                return null;
            };
            Dispatcher.BeginInvoke(func, DispatcherPriority.Input, this);
...
Рейтинг: 0 / 0
06.04.2016, 11:35
    #39209073
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MessageBox не принимает фокус
Потому что KeyDown теперь отрабатывает мессаджбокс и в текстбоксе это событие не возникает
...
Рейтинг: 0 / 0
06.04.2016, 11:42
    #39209082
monstrilla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MessageBox не принимает фокус
Shocker.Pro,

так ведь возникает при удержании. или KeyDown перехватил меседжбокс, закрылся, дальше его ловит текстбокс, открывает меседжбокс и так по кругу?
...
Рейтинг: 0 / 0
06.04.2016, 13:15
    #39209198
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MessageBox не принимает фокус
KeyDown отрабатывает клавиатурный повтор (даже без всякого messagebox-а), так что вполне ожидаемое поведение
...
Рейтинг: 0 / 0
06.04.2016, 16:17
    #39209458
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MessageBox не принимает фокус
мой вариант то попробовали? :)
...
Рейтинг: 0 / 0
07.04.2016, 09:50
    #39209833
monstrilla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MessageBox не принимает фокус
Roman Mejtes,

не, заработало с KeyDown и я успокоился, багов много, загружен пока сильно)
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / MessageBox не принимает фокус / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]