MessageBox ведет себя странно - PullRequest
0 голосов
/ 10 октября 2018

У меня очень странная проблема.

Я пытался запустить этот код, и всякий раз, когда я нажимал клавишу пробела, он печатал несколько раз «A», как я хочу.

комментарии: кодвнутри main Key.IsPressed использует метод WinAPI GetKeyState, а константа пространства является виртуальным ключом клавиши пробела.

while(true) if(Key.IsPressed(Key.Space)) Console.Write('A');

, но когда я заменяю Console.Write('A'); на System.Windows.Forms.MessageBox.Show("A");, он показывает сообщениеЯщик только в первый раз, когда я нажимаю клавишу пробела (После я закрываю окно сообщения , а затем снова нажимаю пробел).

Еще страннее, если я меняю ключ из пробела, чтобы ввести егоотлично работает.

Цель состоит в том, чтобы создать скрытую программу-менеджер ярлыков, чтобы я не мог использовать какую-либо программу чтения клавиш, которая нуждается в фокусировке (например, Console.ReadKey).

1 Ответ

0 голосов
/ 10 октября 2018

Каждый раз, когда вы используете каркасный метод, и он не делает то, что вы ожидаете, вы должны сначала прочитать документацию .Там вы найдете информацию о том, как работает метод Show, например:

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

...