(转)关于c#中的事件
2014-01-01 11:29
316 查看
原文链接/article/1741148.html
如有不明白的地方欢迎加QQ群14670545 探讨
最近在看委托,然后看到事件,以前一直很模糊,关于事件的触发者和响应者的关联。贴一个简单的例子:
1.新建一个类Control.cs
[csharp] view plaincopy
using System;
namespace EventComplex
{
/*
* C#中的事件处理实际上是一种具有特殊签名的delegate
*/
public class Control
{
/// <summary>
/// 代表事件发送者
/// </summary>
/// <param name="sender">代表事件发送者</param>
/// <param name="e">事件参数类
/// <remarks>用来包含与事件相关的数据,所有的事件参数类都必须从System.EventArgs类派生</remarks>
/// </param>
public delegate void MyEventHandler(object sender, MyEventArgs e);//System.EventArgs e
public event MyEventHandler MyEvent;
public Control()
{
this.MyEvent += new MyEventHandler(RaiseSomeEvent);
}
/// <summary>
/// 一个事件
/// </summary>
public void RaiseSomeEvent(object sender, MyEventArgs e)
{
Console.WriteLine("hello " + e.ParamName);
Console.ReadLine();
}
public void RiseSomeEvent()
{
//System.EventArgs e = new System.EventArgs();
Console.Write("Please input 'Name':");
string _param = Console.ReadLine();//ReadLine:按下回车以后才读取,然后触发MyEvent事件
//if (_param.Equals("jon"))//在用户输入jon的情况下触发事件,否则不触发
MyEvent(this, new MyEventArgs(_param));//MyEvent(this,e)
}
}
public class MyEventArgs : System.EventArgs
{
public string ParamName;
public MyEventArgs(string _name)
{
ParamName = _name;
}
}
}
2.我们去Main函数里面测试一下;
[csharp] view plaincopy
public static void demo4()
{
Control ctr = new Control();
ctr.MyEvent += new Control.MyEventHandler(ResponseSomeEvent);
ctr.RiseSomeEvent();
}
public static void ResponseSomeEvent(object sender, EventArgs e)
{
Console.WriteLine("Some event occur!");
}
[csharp] view plaincopy
static void Main(string[] args)
{
demo4();
}
如有不明白的地方欢迎加QQ群14670545 探讨
最近在看委托,然后看到事件,以前一直很模糊,关于事件的触发者和响应者的关联。贴一个简单的例子:
1.新建一个类Control.cs
[csharp] view plaincopy
using System;
namespace EventComplex
{
/*
* C#中的事件处理实际上是一种具有特殊签名的delegate
*/
public class Control
{
/// <summary>
/// 代表事件发送者
/// </summary>
/// <param name="sender">代表事件发送者</param>
/// <param name="e">事件参数类
/// <remarks>用来包含与事件相关的数据,所有的事件参数类都必须从System.EventArgs类派生</remarks>
/// </param>
public delegate void MyEventHandler(object sender, MyEventArgs e);//System.EventArgs e
public event MyEventHandler MyEvent;
public Control()
{
this.MyEvent += new MyEventHandler(RaiseSomeEvent);
}
/// <summary>
/// 一个事件
/// </summary>
public void RaiseSomeEvent(object sender, MyEventArgs e)
{
Console.WriteLine("hello " + e.ParamName);
Console.ReadLine();
}
public void RiseSomeEvent()
{
//System.EventArgs e = new System.EventArgs();
Console.Write("Please input 'Name':");
string _param = Console.ReadLine();//ReadLine:按下回车以后才读取,然后触发MyEvent事件
//if (_param.Equals("jon"))//在用户输入jon的情况下触发事件,否则不触发
MyEvent(this, new MyEventArgs(_param));//MyEvent(this,e)
}
}
public class MyEventArgs : System.EventArgs
{
public string ParamName;
public MyEventArgs(string _name)
{
ParamName = _name;
}
}
}
2.我们去Main函数里面测试一下;
[csharp] view plaincopy
public static void demo4()
{
Control ctr = new Control();
ctr.MyEvent += new Control.MyEventHandler(ResponseSomeEvent);
ctr.RiseSomeEvent();
}
public static void ResponseSomeEvent(object sender, EventArgs e)
{
Console.WriteLine("Some event occur!");
}
[csharp] view plaincopy
static void Main(string[] args)
{
demo4();
}
相关文章推荐
- 关于在标题栏不触发WM_NCLBUTTONUP事件的替代方法(C#)
- C#学习笔记(三)—–C#高级特性中的委托与事件:关于事件
- C# 关于类的事件和委托
- 关于C#的委托与事件的一个小DEMO
- 关于在c#中创建用户控件后,winform应用程序在调用中无法通过点击用户控件的子控件为其自动添加事件代码的问题
- C# 关于事件
- c#关于委托和事件
- 关于C#.Net中事件(event)、委托(delegate)和方法的一点理解
- c#关于委托和事件
- C# 关于事件 委托的理解
- c#关于委托和事件(三)
- c#中关于delegate、委托、事件之间的联系、关系
- C# 中关于委托和事件的一个实例
- 关于C# 委托(delegate)与事件(event)的用法及事例
- 关于C#事件处理函数中的参数(object sender, EventArgs e)
- C# 关于委托和事件的妙文:通过一个例子详细介绍委托和事件的作用;Observer模式简介
- NET(C#):关于进程退出的事件
- 关于c#的事件如何使用
- C#关于事件的几个好例子
- C# 关于委托和事件的妙文:通过一个例子详细介绍委托和事件的作用;Observer模式简介