C # Форма, как запускать метод при каждом нажатии клавиши - PullRequest
0 голосов
/ 12 января 2012

Мой код отлично работает в 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;
            }
        }
}

Но когда я пытаюсь использовать метод hell в C #, форма Windows выдает ошибку

// 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() throwsошибка

Невозможно увидеть, была ли нажата клавиша, когда какое-либо приложение не имеет консоли или когда ввод консоли был перенаправлен из файла.Попробуйте Console.In.Peek.

Как я могу решить эту проблему?И, пожалуйста, попробуйте скомпилировать код, чтобы увидеть, что происходит, я пробовал потоки, но они не помогают.И рабочий код будет мне более полезным, чем объяснение.Я тоже попробовал Form1_KeyDown, но выдает ту же ошибку.

1 Ответ

1 голос
/ 12 января 2012

Сообщение об ошибке говорит вам правду. Приложения Windows не имеют консоли, поэтому вы обычно не можете использовать любой из методов консоли. Чтобы запускать метод при каждом нажатии клавиши в приложении Windows, посмотрите на событие KeyPress в объекте Form. Я думаю, у вас была правильная идея, но убедитесь, что слово «Консоль» нигде не присутствует в вашем обработчике событий.

...