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

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

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

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

Тема:

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

Цель работы:

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

пример

: Создадим класс Cat с событием, возникающим при каждом десятке пойманных мышей:
Листинг программы
  1. // Тип делегата для события
  2. public delegate void MouseCaughtEvent(object sender, int miceCaughtCount);
  3. public class Cat {
  4. private int miceCaughtCount;
  5. // событие, возникающее при каждом очередном десятке пойманных мышей
  6. public event MouseCaughtEvent OnEachTenCaught;
  7. // Поймать мышь
  8. public void CatchAMouse() {
  9. miceCaughtCount++;
  10. if (miceCaughtCount % 10 == 0) { // если количество кратно 10
  11. if (OnEachTenCaught != null) { // и если есть обработчик,
  12. OnEachTenCaught(this,miceCaughtCount); // то вызываем событие
  13. }
  14. }
  15. }
  16. }
Продемонстрируем обработку этого события, объявив в форме один объект класса Cat и назначив ему обработчик в событии form1_Load. Увеличение количества пойманных мышей будем производить при нажатии кнопки button1.
Листинг программы
  1. public class Form1: System.Windows.Forms.Form {
  2. private Cat cat1 = new Cat(); // Наша кошка
  3. private Button button1; // Кнопка для ловли мышей
  4. // Назначение обработчика
  5. private void Form1_Load(object sender, EventArgs e) {
  6. cat1.OnEachTenCaught += new MouseCaughtEvent(cat1_OnEachTenCaught);
  7. }
  8. // Сам обработчик
  9. private void cat1_OnEachTenCaught(object sender, int miceCaughtCount) {
  10. MessageBox.Show(sender.ToString() + " – поймали еще 10 мышей!");
  11. }
  12. // Нажатие на кнопку button1
  13. private void button1_Click(object sender, EventArgs e) {
  14. cat1.CatchAMouse(); // Поймать одну мышь.
  15. // Каждые 10 мышей будет срабатывать обработчик
  16. }
  17. }

Моя программа, в которой нужно добавить событие.

Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace ВтораяЛабараторка
  7. {
  8. class Liquid // Основной класс
  9. {
  10. public string name; // Название алкоголя
  11. public void NameShow() // Вывод названия алкоголя
  12. {
  13. Console.WriteLine("Название алкоголя: " + name);
  14. }
  15. }
  16. class Alcohol : Liquid // Наследуемый класс
  17. {
  18. public string vol; // Крепость алкоголя.
  19. public Alcohol(string vol, string name)
  20. {
  21. this.name = name;
  22. this.vol = vol;
  23. // Приравнивание
  24. }
  25. public void VolShow() // Вывод крепости алкоголя после названия
  26. {
  27. Console.WriteLine("Крепость Алкоголя: " + vol);
  28. }
  29. }
  30.  
  31. class Program
  32. {
  33. static void Main() // Добавляем несколько напитков и записываем их параметры для вывода
  34. {
  35. Alcohol drink = new Alcohol("","");
  36. drink.name = "Henessy Black";
  37. drink.vol = "40%";
  38. drink.NameShow(); // Выводим название напитка
  39. drink.VolShow(); // Выводим крепость напитка
  40. Console.WriteLine("-----------------");
  41. Alcohol drink2 = new Alcohol("", "");
  42. drink.name = "Hektors Sweet";
  43. drink.vol = "32%";
  44. drink.NameShow(); // Выводим название напитка
  45. drink.VolShow(); // Выводим крепость напитка
  46. Console.WriteLine("-----------------");
  47. Alcohol drink3 = new Alcohol("", "");
  48. drink.name = "Aldaris Alus";
  49. drink.vol = "4.5%";
  50. drink.NameShow(); // Выводим название напитка
  51. drink.VolShow(); // Выводим крепость напитка
  52. Console.WriteLine("-----------------");
  53. Alcohol drink4 = new Alcohol("", "");
  54. drink.name = "Cesu Gold 5";
  55. drink.vol = "3.0%";
  56. drink.NameShow(); // Выводим название напитка
  57. drink.VolShow(); // Выводим крепость напитка
  58. Console.WriteLine("-----------------");
  59. Alcohol drink5 = new Alcohol("", "");
  60. drink.name = "Vodka Nemiroff";
  61. drink.vol = "40%";
  62. drink.NameShow(); // Выводим название напитка
  63. drink.VolShow(); // Выводим крепость напитка
  64.  
  65. Console.ReadLine();
  66. }
  67. }
  68. }
буду очень рад любой помощи!!!! Спасибо!!!!

Решение задачи: «Создание и обработка событий»

textual
Листинг программы
  1.     public partial class Form1 : Form
  2.     {
  3.         public Form1()
  4.         {
  5.             InitializeComponent();
  6.          
  7.             drink.name = "Vodka Nemiroff";
  8.             drink.vol = 40;
  9.             drink.minVol = 15;
  10.             drink.BarmanLayOffEvent += new BarmanLayOffDel(drink_BarmanLayOffHandler);
  11.         }
  12.         Alcohol drink = new Alcohol();
  13.  
  14.  
  15.         // Тип делегата для события
  16.         public delegate void BarmanLayOffDel(object sender);
  17.  
  18.         class Liquid // Основной класс
  19.         {
  20.             public string name; // Название
  21.  
  22.         }
  23.  
  24.         class Alcohol : Liquid // Наследуемый класс
  25.         {
  26.             public float vol; // Крепость алкоголя.
  27.             public float minVol; // Мин Крепость алкоголя.
  28.  
  29.             public event BarmanLayOffDel BarmanLayOffEvent;
  30.             public Alcohol()
  31.             {
  32.                 this.name = "";
  33.                 this.vol = 0.0f;
  34.                 this.minVol = 0.0f;
  35.             }
  36.             public Alcohol(string name, float vol, float minVol)
  37.             {
  38.                 this.name = name;
  39.                 this.vol = vol;
  40.                 this.minVol = minVol;
  41.             }
  42.             public override string ToString()
  43.             {
  44.                 return "Название: " + name + "\nКрепость Алкоголя: " + vol + "\nМинимальная крепость Алкоголя: " + minVol;
  45.             }
  46.  
  47.  
  48.             // Бармен разбавляет алкоголь
  49.             public void WaterDown()
  50.             {
  51.                 this.vol-= 5.0f;
  52.  
  53.                 // если  разбавлять дальше некуда
  54.                 if (this.vol <= this.minVol)
  55.                 {
  56.                     if (BarmanLayOffEvent != null)
  57.                     {
  58.                         // то вызываем событие. бармена поймали и уволили
  59.                         BarmanLayOffEvent(this);
  60.                     }
  61.                 }
  62.             }
  63.            
  64.  
  65.         }
  66.         // Сам обработчик
  67.         private  void drink_BarmanLayOffHandler(object sender)
  68.         {
  69.             MessageBox.Show("Бармен был уволен " + sender.ToString());
  70.             (sender as Alcohol).vol = 40; // замена испорченного напитка
  71.         }
  72.         private void button1_Click(object sender, EventArgs e)
  73.         {          
  74.             drink.WaterDown();          
  75.         }
  76.     }

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут