Создание и обработка событий - 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();
}
}