【发布时间】:2019-09-27 09:52:48
【问题描述】:
我在 .Net Framework 8.0 中使用 C#。 我想使用键盘输入来逃避 while 循环。
在下面的 C# 代码中,
1) 如果我删除“MessageBox.Show(State.ToString());”,我就无法逃脱 while 循环。
2) 如果我添加“MessageBox.Show(State.ToString());”,我可以逃避 while 循环。但是,它并不完美。因为看到MessageBox“false”后,必须按“A”回车。然后 Next Step,State 更改为“true”。我可以看到“真实”>“进入!!!”>“当循环被破坏时!!!”消息框。
a) 1) 和 2) 有什么区别。
b) 如何使用键盘输入在 while 循环中转义?很容易。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Input;
namespace WF_Templete_
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void bt_Start_Click(object sender, EventArgs e)
{
while (true)
{
bool State = (System.Windows.Input.Keyboard.IsKeyDown(System.Windows.Input.Key.A) == true);
// MessageBox.Show(State.ToString());
if (State)
{
MessageBox.Show("Entered !");
break;
}
}
MessageBox.Show("While Loop is Broken !!!");
}
}
}
【问题讨论】:
-
没有.Net-framework 8,只有C# 8。例如框架可能是4.7.1。
-
请注意,
bool State = (System.Windows.Input.Keyboard.IsKeyDown(System.Windows.Input.Key.A) == true);可以简化为bool State = Keyboard.IsKeyDown(Key.A);,因为您已经包含了System.Windows.Input和bool State = true/false == true是多余的 -
这是一个 X-Y 问题。你到底想达到什么目的?
-
感谢您的 cmets。无论如何,重要的是 while(Keyboard.IsKeyDown(Key.A)) 或 if (Keyboard.IsKeyDown(Key.A)) 不起作用。
-
但是你想做什么?运行一些后台线程直到按下
A而不阻塞用户界面?正确的答案将取决于您实际尝试做的事情,而不是将您的错误解决方案与任何问题联系在一起......
标签: c# while-loop keyboard