⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 program.cs

📁 C#2.0宝典源码,C#经典书籍,很多例子
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.Text;

namespace Example15_6
{
    using System;
    using System.ComponentModel;

    /// <summary>
    /// AlarmEventArgs类,包含了闹钟的事件
    /// </summary>
    public class AlarmEventArgs : EventArgs
    {
        /// <summary>
        /// snoozePressed字段
        /// </summary>
        private readonly bool snoozePressed;

        /// <summary>
        /// nrings字段
        /// </summary>
        private readonly int nrings;

        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="snoozePressed"></param>
        /// <param name="nrings"></param>
        public AlarmEventArgs(bool snoozePressed, int nrings)
        {
            this.snoozePressed = snoozePressed;
            this.nrings = nrings;
        }

        /// <summary>
        /// NumRings属性,表示闹铃事件开始后,响铃的次数
        /// </summary>
        public int NumRings
        {
            get { return nrings; }
        }

        /// <summary>
        /// SnoozePressed属性,表示闹钟按钮是否被按下
        /// </summary>
        public bool SnoozePressed
        {
            get { return snoozePressed; }
        }

        /// <summary>
        /// AlarmText属性,表示闹铃文字
        /// </summary>
        public string AlarmText
        {
            get
            {
                if (snoozePressed)
                {
                    return ("起床啦!起床啦!睡觉时间结束了!");
                }
                else
                {
                    return ("起床啦!");
                }
            }
        }
    }

    /// <summary>
    /// 声明委托,
    /// </summary>
    /// <param name="sender">表示事件的引发者</param>
    /// <param name="e">事件参数</param>
    public delegate void AlarmEventHandler(object sender, AlarmEventArgs e);

    /// <summary>
    /// AlarmClock类,表示闹钟
    /// </summary>
    public class AlarmClock
    {
        /// <summary>
        /// snoozePressed字段
        /// </summary>
        private bool snoozePressed = false;

        /// <summary>
        /// nrings字段
        /// </summary>
        private int nrings = 0;

        /// <summary>
        /// stop字段
        /// </summary>
        private bool stop = false;

        /// <summary>
        /// Stop属性,表示闹钟是否停止
        /// </summary>
        public bool Stop
        {
            get 
            {
                return stop; 
            }
            set 
            { 
                stop = value; 
            }
        }

        /// <summary>
        /// SnoozePressed属性,表示闹铃按钮是否被按下
        /// </summary>
        public bool SnoozePressed
        {
            get 
            {
                return snoozePressed; 
            }
            set 
            { 
                snoozePressed = value; 
            }
        }

        /// <summary>
        /// Alarm事件
        /// </summary>
        public event AlarmEventHandler Alarm;

        /// <summary>
        /// OnAlarm方法,引发Alarm事件
        /// </summary>
        /// <param name="e">事件参数</param>
        protected virtual void OnAlarm(AlarmEventArgs e)
        {
            if (Alarm != null)
            {
                //调用委托
                Alarm(this, e);
            }
        }

        /// <summary>
        /// Start方法,表示闹铃开始
        /// </summary>
        public void Start()
        {
            for (; ; )
            {
                nrings++;
                if (stop)
                {
                    break;
                }

                else if (snoozePressed)
                {
                    System.Threading.Thread.Sleep(1000);
                    {
                        AlarmEventArgs e = new AlarmEventArgs(snoozePressed,
                           nrings);
                        OnAlarm(e);
                    }
                }
                else
                {
                    System.Threading.Thread.Sleep(300);
                    AlarmEventArgs e = new AlarmEventArgs(snoozePressed,
                       nrings);
                    OnAlarm(e);
                }
            }
        }
    }

    /// <summary>
    /// WakeMeUp类,可以对闹铃事件进行处理
    /// </summary>
    public class WakeMeUp
    {
        /// <summary>
        /// AlarmRang方法,类似于按钮的Click事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void AlarmRang(object sender, AlarmEventArgs e)
        {

            Console.WriteLine(e.AlarmText + "\n");

            if (!(e.SnoozePressed))
            {
                if (e.NumRings % 10 == 0)
                {
                    Console.WriteLine(" 继续闹铃,请输入 Y");
                    Console.WriteLine(" 按下闹铃按钮,请输入 N");
                    Console.WriteLine(" 停止闹铃,请输入 Q");
                    String input = Console.ReadLine();

                    if (input.Equals("Y") || input.Equals("y")) return;

                    else if (input.Equals("N") || input.Equals("n"))
                    {
                        ((AlarmClock)sender).SnoozePressed = true;
                        return;
                    }
                    else
                    {
                        ((AlarmClock)sender).Stop = true;
                        return;
                    }
                }
            }
            else
            {
                Console.WriteLine(" 继续闹铃,请输入 Y");
                Console.WriteLine(" 停止闹铃,请输入 Q");
                String input = Console.ReadLine();
                if (input.Equals("Y") || input.Equals("y")) return;
                else
                {
                    ((AlarmClock)sender).Stop = true;
                    return;
                }
            }
        }
    }

    /// <summary>
    /// 主类,程序的流程在此类中
    /// </summary>
    public class Program
    {
        /// <summary>
        /// Main方法
        /// </summary>
        /// <param name="args">运行参数</param>
        public static void Main(string[] args)
        {
            //实例化事件接收者
            WakeMeUp w = new WakeMeUp();

            //实例化事件源
            AlarmClock clock = new AlarmClock();

            // 绑定AlarmRang方法到Alarm事件.
            clock.Alarm += new AlarmEventHandler(w.AlarmRang);

            //开始闹铃
            clock.Start();
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -