【发布时间】:2018-07-15 01:14:27
【问题描述】:
您好,我的问题似乎很简单,但我无法单独解决。
我有一个 WinForms 应用程序,它有一个按钮。当我按下它时,一些代码会运行,我希望在其中有一个循环,只要按下任何键就会中断。
我当然不能使用 Console.ReadKey(),因为它是一个 winforms,我不想用鼠标点击按钮,也不想使用另一个 EventArg。
有没有什么方法可以通过循环检测 winforms 应用程序中的击键。
这就是想法:
private void btn_Click(object sender, EventArgs e)
{
// Do stuff
while (Key is not pressed)
{
try to detect key pressing
}
// Other stuff
}
提前致谢。
【问题讨论】:
-
答案将取决于“一些代码运行”的情况。表单是否仍在接收更新且代码异步运行?
-
最好有单独的按钮和键盘处理程序并引入一个标志
-
你等不及了,这会让 UI 挂起。只需在 Click 事件处理程序中将 bool 变量设置为 true。然后在 KeyPress 事件处理程序中,您可以检查变量并执行 //otherstuff。请考虑一下如何将其重置为 false。