sidali.kadi Ответов: 1

Как заставить программу winforms ждать (напр. Для нажатия кнопки "enter")?


Я получил приложение WinForm. У меня в нем есть функция. И в этой функции есть момент, когда я хочу, чтобы она перестала идти вперед и ждала, когда пользователь нажмет "клавишу ввода" или указанную кнопку

Я с нетерпением жду, может быть, какой-то цикл Инфинити, ожидая нажатия определенной клавиши клавиатуры?

Что я уже пробовал:

Consol.ReadKey();
//ihad this error
//Cannot read keys when either application does not have a console or when console //input has been redirected from a file. Try Console.Read.
MessageBox.Show("button pressed");

1 Ответов

Рейтинг:
11

OriginalGriff

В значительной степени, вы не можете - или, по крайней мере, вы определенно не должны.

Проблема в том, что в отличие от консольного приложения WinForms управляется сообщениями, поэтому, если ваш код сидит и ждет, когда пользователь нажмет клавишу, остальная часть вашего приложения ничего не может сделать, включая обновление дисплея или реагирование на системные события. Это плохо , очень плохо.

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


CPallini

5.