我的代码在WindowsConsoleApplication
中完美运行// The below code is working in WindowsConsoleApplication
class Class1
{
public int a = 0;
static void Main(string[] args)
{
Program prg = new Program();
prg.hell();
Console.WriteLine("Working" + prg.a);
Console.ReadKey();
}
public void hell()
{
Console.WriteLine("Press any key to stop");
while
(!Console.KeyAvailable || Console.ReadKey(true).Key != ConsoleKey.DownArrow )
{
a += 1;
}
}
}
但是当我尝试在C#中使用hell
方法时,窗体会抛出错误
// This code isn't working in C# windows form
class Class1
{
public int a = 0;
public void hell()
{
Console.WriteLine("Press any key to stop");
while
(!Console.KeyAvailable || Console.ReadKey(true).Key != ConsoleKey.DownArrow)
{
a += 1;
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
Class1 obj = new Class1();
MessageBox.Show("WORKING....");
obj.hell();
MessageBox.Show("Isn't Working...." + obj.a);
}
obj.hell()
会抛出错误
当任一应用程序没有控制台或时,无法看到是否按下了某个键 控制台输入已从文件重定向时。试试Console.In.Peek。
我该如何解决这个问题?并且请尝试编译代码以查看最新情况,我尝试了线程,但它们没有帮助。而工作代码将对我更有帮助然后解释。我也尝试了Form1_KeyDown
,但它会抛出相同的错误。
答案 0 :(得分:1)
错误消息告诉你实话。 Windows应用程序没有控制台,因此您通常无法使用任何控制台方法。要在每次在Windows应用程序中按下某个键时运行方法,请查看Form对象上的KeyPress
事件。我认为你有正确的想法,但要确保" Console"不会出现在事件处理程序中的任何位置。