Создание и обработка событий - C#

Узнай цену своей работы

Формулировка задачи:

Всем добрый день. К данной программе нужно создать какое либо событие.

Тема:

Создание и обработка событий.

Цель работы:

Закрепить навыки работы с типами делегатов, научиться разрабатывать компоненты-источники событий, а также использовать эти компоненты в программах- клиентах. Есть

пример

: Создадим класс 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); // то вызываем событие
 }
 }
 }
}
Продемонстрируем обработку этого события, объявив в форме один объект класса Cat и назначив ему обработчик в событии form1_Load. Увеличение количества пойманных мышей будем производить при нажатии кнопки button1.
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();          
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.286 из 5