C#表示每次按键盘键时如何运行方法

时间:2012-01-12 08:30:36

标签: c# methods console-application keypress

我的代码在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,但它会抛出相同的错误。

1 个答案:

答案 0 :(得分:1)

错误消息告诉你实话。 Windows应用程序没有控制台,因此您通常无法使用任何控制台方法。要在每次在Windows应用程序中按下某个键时运行方法,请查看Form对象上的KeyPress事件。我认为你有正确的想法,但要确保" Console"不会出现在事件处理程序中的任何位置。