c#自定义事件(转)

namespace Test
{        
    class Program
     {
        static void Main(string[] args)
         {
             MonitoringNameChangement M = new MonitoringNameChangement();
             M.NameChanged += new NameChanged(M_NameChanged);
            while (true)
             {
                 Console.WriteLine("请输入一个新的名字,您将会看到您自定义的事件会被执行");
                 M.ChangeName = Console.ReadLine();
             }
         }

        static void M_NameChanged(string oldName, string NewName)
         {
             Console.WriteLine("******************************************* 名字已经改变");
             Console.WriteLine("新名字是: {0} 老名字是: {1}", NewName, oldName);
             Console.WriteLine("******************************************* ");
         }
      
     }
    //定义一个监控名字变化的委托
    public delegate void NameChanged(string oldName, string NewName);
    //定义一个名字监控类
    public class MonitoringNameChangement
     {
        private string name = "老名字";
        public string ChangeName
         {
            set
             {
                //如果输入的是全新的名字,则会调用监控名字的事件,并且存储新名字
                if (name != value)
                 {
                     NameChanged(name, value);
                     name = value;
                 }
             }
            get
             { 
                return name;
             }
         }
        //监控名字的事件
        public event NameChanged NameChanged;
     }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# 中,自定义事件是一个非常重要的概念,它使得我们可以在特定的情况下触发一个事件,并且在事件发生时执行特定的操作。自定义事件的基本思想是,定义一个委托类型来表示事件,然后定义一个事件来注册和触发该委托。 下面是定义自定义事件的一般步骤: 1. 定义一个委托类型 在 C# 中,委托类型是一种特殊的类型,它可以存储一个或多个方法的引用,可以用来表示事件。例如,假设我们要定义一个事件,当某个按钮被单击时触发,我们可以定义一个委托类型如下: ``` public delegate void ClickEventHandler(object sender, EventArgs e); ``` 这个委托类型表示一个方法,它有两个参数:一个是事件的发送者,另一个是事件参数。在这个委托类型中,我们使用了 C# 中内置的 EventArgs 类来表示事件参数。 2. 定义一个事件 定义一个事件需要两个步骤:首先,我们需要在类中定义一个委托类型的变量,用来存储注册到事件上的方法;其次,我们需要定义一个公共的事件,用来注册和触发该委托。 例如,假设我们要定义一个名为 Button 的类,该类有一个 Click 事件,我们可以定义如下: ``` public class Button { // 定义一个委托类型的变量 private ClickEventHandler clickHandler; // 定义一个公共的事件 public event ClickEventHandler Click { add { clickHandler += value; } remove { clickHandler -= value; } } // 触发事件的方法 protected virtual void OnClick(EventArgs e) { if (clickHandler != null) clickHandler(this, e); } // 模拟按钮被单击的方法 public void SimulateClick() { OnClick(EventArgs.Empty); } } ``` 在这个示例中,我们首先定义了一个名为 clickHandler 的委托类型的变量,用来存储注册到 Click 事件上的方法。然后,我们定义了一个公共的事件 Click,它使用了 C# 中内置的 event 关键字,并通过 add 和 remove 访问器来实现注册和注销事件的方法。接着,我们定义了一个受保护的虚拟方法 OnClick,用来触发 Click 事件,并在其中调用了 clickHandler 变量所存储的所有方法。最后,我们定义了一个模拟按钮被单击的方法 SimulateClick,用来触发 Click 事件。 3. 注册事件处理方法 要在事件发生时执行特定的操作,我们需要将一个方法注册到事件上。在 C# 中,我们可以使用 += 运算符来注册方法,使用 -= 运算符来注销方法。 例如,假设我们要在 Button 类的 Click 事件发生时弹出一个消息框,我们可以编写如下代码: ``` Button button = new Button(); button.Click += (sender, e) => MessageBox.Show("Button clicked!"); button.SimulateClick(); ``` 在这个示例中,我们首先创建了一个 Button 对象 button,并使用 += 运算符将一个匿名方法注册到 button 的 Click 事件上。在匿名方法中,我们使用了 MessageBox 类来弹出一个消息框,显示按钮被单击的信息。接着,我们调用了 button 的 SimulateClick 方法,来模拟按钮被单击的操作。当 SimulateClick 方法被调用时,会触发 Click 事件,并执行注册到该事件上的方法。 以上就是 C# 中定义自定义事件的一般步骤。通过自定义事件,我们可以很方便地实现类似于 Windows 应用程序中的事件机制,使得程序更加灵活和易于维护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值