При нажатии любой цифры программа завершает работу и выводит результат о введенных данных - C#
Формулировка задачи:
помогите исправить код. что б при нажатии любой цифры программа завершала работу и выводила результат о введенных даных.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication6
{
// Пример обработки события, связанного с нажатием
// клавиши на клавиатуре.
// Выводим собственный класс EventArgs, который
// будет хранить код клавиши.
class KeyEventArgs : EventArgs
{
public char ch;
}
// Объявляем делегат для события.
delegate void KeyHandler(object source, KeyEventArgs arg);
// Объявляем класс события, связанного с нажатием
// клавиши на клавиатуре.
class KeyEvent
{
public event KeyHandler KeyPress;
// Этот метод вызывается при нажатии
// какой-нибудь клавиши.
public void OnKeyPress(char key)
{
KeyEventArgs k = new KeyEventArgs();
if (KeyPress != null)
{
k.ch = key;
KeyPress(this, k);
}
}
}
// Класс, который принимает уведомления о нажатии клавиши.
class ProcessKey
{
public void keyhandler(object source, KeyEventArgs arg)
{
Console.WriteLine("Получено сообщение о нажатии клавиши: " + arg.ch);
}
}
class Process
{
public int countt = 0;
public void keyhandler(object source, KeyEventArgs arg)
{
if (arg.ch == 121)
{
countt++;
}
Console.WriteLine("Клавишу Y нажато : " + countt);
}
}
// Еще один класс, который принимает уведомления
// о нажатии клавиши.
class CountKeys
{
public int count = 0;
public void keyhandler(object source, KeyEventArgs arg)
{
count++;
}
}
// Демонстрируем использование класса KeyEvent.
class KeyEventDemo
{
public static void Main()
{
Process big = new Process();
KeyEvent kevt = new KeyEvent();
ProcessKey pk = new ProcessKey();
CountKeys ck = new CountKeys();
char ch;
kevt.KeyPress += new KeyHandler(big.keyhandler);
kevt.KeyPress += new KeyHandler(pk.keyhandler);
kevt.KeyPress += new KeyHandler(ck.keyhandler);
Console.WriteLine("Введите несколько символов. " +
"Для останова введите точку.");
do
{
ch = (char)Console.Read();
kevt.OnKeyPress(ch);
} while (ch != '.');
Console.WriteLine("Было нажато " + ck.count + " клавиш.");
}
}
}Решение задачи: «При нажатии любой цифры программа завершает работу и выводит результат о введенных данных»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication6
{
// Пример обработки события, связанного с нажатием
// клавиши на клавиатуре.
// Выводим собственный класс EventArgs, который
// будет хранить код клавиши.
class KeyEventArgs : EventArgs
{
public char ch;
}
// Объявляем делегат для события.
delegate void KeyHandler(object source, KeyEventArgs arg);
// Объявляем класс события, связанного с нажатием
// клавиши на клавиатуре.
class KeyEvent
{
public event KeyHandler KeyPress;
// Этот метод вызывается при нажатии
// какой-нибудь клавиши.
public void OnKeyPress(char key)
{
KeyEventArgs k = new KeyEventArgs();
if (KeyPress != null)
{
k.ch = key;
KeyPress(this, k);
}
}
}
// Класс, который принимает уведомления о нажатии клавиши.
class ProcessKey
{
public void keyhandler(object source, KeyEventArgs arg)
{
Console.WriteLine("\nПолучено сообщение о нажатии клавиши: " + arg.ch);
}
}
class Process
{
public int countt = 0;
public void keyhandler(object source, KeyEventArgs arg)
{
if (arg.ch == 121)
{
countt++;
}
}
}
// Еще один класс, который принимает уведомления
// о нажатии клавиши.
class CountKeys
{
public int count = 0;
public void keyhandler(object source, KeyEventArgs arg)
{
count++;
}
}
// Демонстрируем использование класса KeyEvent.
class KeyEventDemo
{
public static void Main()
{
Process big = new Process();
KeyEvent kevt = new KeyEvent();
ProcessKey pk = new ProcessKey();
CountKeys ck = new CountKeys();
char ch;
kevt.KeyPress += new KeyHandler(big.keyhandler);
kevt.KeyPress += new KeyHandler(pk.keyhandler);
kevt.KeyPress += new KeyHandler(ck.keyhandler);
Console.WriteLine("Введите несколько символов. " +
"Для останова введите точку или цифру.");
do
{
ch = Console.ReadKey().KeyChar;
kevt.OnKeyPress(ch);
} while (ch != '.' && !char.IsDigit(ch));
Console.WriteLine("Было нажато " + ck.count + " клавиш.");
Console.WriteLine("Клавиша Y была нажата " + big.countt + " раз(а).");
}
}
}