Создание и обработка событий - C#
Формулировка задачи:
Всем добрый день. К данной программе нужно создать какое либо событие.
Продемонстрируем обработку этого события, объявив в форме один объект класса Cat и
назначив ему обработчик в событии form1_Load. Увеличение количества пойманных мышей
будем производить при нажатии кнопки button1.
буду очень рад любой помощи!!!! Спасибо!!!!
Тема:
Создание и обработка событий.Цель работы:
Закрепить навыки работы с типами делегатов, научиться разрабатывать компоненты-источники событий, а также использовать эти компоненты в программах- клиентах. Естьпример
: Создадим класс Cat с событием, возникающим при каждом десятке пойманных мышей:
Листинг программы
- // Тип делегата для события
- public delegate void MouseCaughtEvent(object sender, int miceCaughtCount);
- public class Cat {
- private int miceCaughtCount;
- // событие, возникающее при каждом очередном десятке пойманных мышей
- public event MouseCaughtEvent OnEachTenCaught;
- // Поймать мышь
- public void CatchAMouse() {
- miceCaughtCount++;
- if (miceCaughtCount % 10 == 0) { // если количество кратно 10
- if (OnEachTenCaught != null) { // и если есть обработчик,
- OnEachTenCaught(this,miceCaughtCount); // то вызываем событие
- }
- }
- }
- }
Листинг программы
- public class Form1: System.Windows.Forms.Form {
- private Cat cat1 = new Cat(); // Наша кошка
- private Button button1; // Кнопка для ловли мышей
- // Назначение обработчика
- private void Form1_Load(object sender, EventArgs e) {
- cat1.OnEachTenCaught += new MouseCaughtEvent(cat1_OnEachTenCaught);
- }
- // Сам обработчик
- private void cat1_OnEachTenCaught(object sender, int miceCaughtCount) {
- MessageBox.Show(sender.ToString() + " – поймали еще 10 мышей!");
- }
- // Нажатие на кнопку button1
- private void button1_Click(object sender, EventArgs e) {
- cat1.CatchAMouse(); // Поймать одну мышь.
- // Каждые 10 мышей будет срабатывать обработчик
- }
- }
Моя программа, в которой нужно добавить событие.
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace ВтораяЛабараторка
- {
- class Liquid // Основной класс
- {
- public string name; // Название алкоголя
- public void NameShow() // Вывод названия алкоголя
- {
- Console.WriteLine("Название алкоголя: " + name);
- }
- }
- class Alcohol : Liquid // Наследуемый класс
- {
- public string vol; // Крепость алкоголя.
- public Alcohol(string vol, string name)
- {
- this.name = name;
- this.vol = vol;
- // Приравнивание
- }
- public void VolShow() // Вывод крепости алкоголя после названия
- {
- Console.WriteLine("Крепость Алкоголя: " + vol);
- }
- }
- class Program
- {
- static void Main() // Добавляем несколько напитков и записываем их параметры для вывода
- {
- Alcohol drink = new Alcohol("","");
- drink.name = "Henessy Black";
- drink.vol = "40%";
- drink.NameShow(); // Выводим название напитка
- drink.VolShow(); // Выводим крепость напитка
- Console.WriteLine("-----------------");
- Alcohol drink2 = new Alcohol("", "");
- drink.name = "Hektors Sweet";
- drink.vol = "32%";
- drink.NameShow(); // Выводим название напитка
- drink.VolShow(); // Выводим крепость напитка
- Console.WriteLine("-----------------");
- Alcohol drink3 = new Alcohol("", "");
- drink.name = "Aldaris Alus";
- drink.vol = "4.5%";
- drink.NameShow(); // Выводим название напитка
- drink.VolShow(); // Выводим крепость напитка
- Console.WriteLine("-----------------");
- Alcohol drink4 = new Alcohol("", "");
- drink.name = "Cesu Gold 5";
- drink.vol = "3.0%";
- drink.NameShow(); // Выводим название напитка
- drink.VolShow(); // Выводим крепость напитка
- Console.WriteLine("-----------------");
- Alcohol drink5 = new Alcohol("", "");
- drink.name = "Vodka Nemiroff";
- drink.vol = "40%";
- drink.NameShow(); // Выводим название напитка
- drink.VolShow(); // Выводим крепость напитка
- Console.ReadLine();
- }
- }
- }
Решение задачи: «Создание и обработка событий»
textual
Листинг программы
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- drink.name = "Vodka Nemiroff";
- drink.vol = 40;
- drink.minVol = 15;
- drink.BarmanLayOffEvent += new BarmanLayOffDel(drink_BarmanLayOffHandler);
- }
- Alcohol drink = new Alcohol();
- // Тип делегата для события
- public delegate void BarmanLayOffDel(object sender);
- class Liquid // Основной класс
- {
- public string name; // Название
- }
- class Alcohol : Liquid // Наследуемый класс
- {
- public float vol; // Крепость алкоголя.
- public float minVol; // Мин Крепость алкоголя.
- public event BarmanLayOffDel BarmanLayOffEvent;
- public Alcohol()
- {
- this.name = "";
- this.vol = 0.0f;
- this.minVol = 0.0f;
- }
- public Alcohol(string name, float vol, float minVol)
- {
- this.name = name;
- this.vol = vol;
- this.minVol = minVol;
- }
- public override string ToString()
- {
- return "Название: " + name + "\nКрепость Алкоголя: " + vol + "\nМинимальная крепость Алкоголя: " + minVol;
- }
- // Бармен разбавляет алкоголь
- public void WaterDown()
- {
- this.vol-= 5.0f;
- // если разбавлять дальше некуда
- if (this.vol <= this.minVol)
- {
- if (BarmanLayOffEvent != null)
- {
- // то вызываем событие. бармена поймали и уволили
- BarmanLayOffEvent(this);
- }
- }
- }
- }
- // Сам обработчик
- private void drink_BarmanLayOffHandler(object sender)
- {
- MessageBox.Show("Бармен был уволен " + sender.ToString());
- (sender as Alcohol).vol = 40; // замена испорченного напитка
- }
- private void button1_Click(object sender, EventArgs e)
- {
- drink.WaterDown();
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д