创建事件(event)
来源:互联网 发布:工商银行软件中心待遇 编辑:程序博客网 时间:2024/06/07 04:44
事件(event):
让我通过一个例子来模拟事件的整个过程:
- 创建一个button类,它里面有一个click 事件。
- 创建一个Form类,他里面有一个我们上面定义的button类。
- 要求:当我们用户单击button类的时候From类要对他进行处理,输出一条信息“我知道你被单击了”
请看下图:
首先我们会单击button,然后button会通知Form,然后From就作出相应。这个过程在C#里面应该怎么做到呢?
下面我会列出上述例子的源代码(这里就不介绍怎么声明event等等内容了):
using System;
using System.Collections.Generic;
using System.Text;
namespace UsingEvent
{
public delegate voidClickEventHandler(object sender, EventArgs e);//声明一个代表:请看文章最后面Note
public classMyButton //创建MyBottom
{
public event ClickEventHandler ClickEvent;//声明一个事件
public voidClick() //单击MyButton
{
if (ClickEvent != null) //当myButton.ClickEvent += newClickEventHandler(OnClickEvent); 时成立
{
Console.WriteLine("MyButton: 我被单击了");
ClickEvent(this,null); //抛出事件,给所有相应者
}
}
}
public class MyForm
{
public MyButton myButton = newMyButton();
public MyForm()
{
//添加事件到myButton中,当myButton被单击的时候就会调用相应的处理函数
myButton.ClickEvent += new ClickEventHandler(OnClickEvent);
}
//事件处理函数
void OnClickEvent(object sender, EventArgs e)
{
Console.WriteLine("MyForm: 我知道你被单击了!");
}
}
class Program
{
static void Main(string[] args)
{
MyForm form= new MyForm();//生成一个MyForm
form.myButton.Click();//单击MyForm中的鼠标,效果就出来了
}
}
}
Note:public delegate void ClickEventHandler(object sender, EventArgs e);这是事件委托标准的声明方法,其实在参数里面我们可以不传,也可以是其他类型的。但是最好还是使用上面的声明方法,你可以继承EventArgs,来包装你要传送的其他任何参数。
/////////////////////////////////////////////////////////////////////////////
分享至:http://www.cnblogs.com/scottckt/archive/2010/09/29/1838598.html
谢谢原作者
例2:说明EventArgs传参数的方法:
//打印对象
public class CustomPrint
{
/// <summary>
/// 1、定义事件参数
/// </summary>
public class CustomPrintArgument : EventArgs
{
private int copies;
public CustomPrintArgument(int numberOfCopies)
{
this.copies = numberOfCopies;
}
public int Copies
{
get { return this.copies; }
}
}
/// <summary>
/// 2、声明事件的委托
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public delegate void CustomPrintHandler(object sender, CustomPrintArgument e);
/// <summary>
/// 3、声明事件
/// </summary>
public event CustomPrintHandler CustomPrintEvent;
/// <summary>
/// 4、定义触发事件
/// </summary>
/// <param name="copyies">份数</param>
public void RaisePrint(int copyies)
{
CustomPrintArgument e = new CustomPrintArgument(copyies);
CustomPrintEvent(this, e);
}
}
/// <summary>
/// WinForm 构造函数
/// </summary>
public Form1()
{
InitializeComponent();
PrintCustom();
}
/// <summary>
/// 打印方法
/// </summary>
private void PrintCustom()
{
//实例对象
CustomPrint cp = new CustomPrint();
//添加事件
cp.CustomPrintEvent += new CustomPrint.CustomPrintHandler(cp_CustomPrintEvent);
//5、触发事件
cp.RaisePrint(10);
}
//6、事件处理
void cp_CustomPrintEvent(object sender, CustomPrint.CustomPrintArgument e)
{
int copies = e.Copies;
MessageBox.Show(copies.ToString());
}
}
- 创建事件(event)
- mysql创建event事件
- 事件(event)
- 事件(Event)
- event事件(1)
- 事件(event)
- MySQL事件(Event)
- C# 事件(Event)
- C# 事件(Event)
- C#事件(Event)
- MySQL事件(Event)
- C# 事件(Event)
- 事件(Event)
- 【C#】事件(Event)
- gwt利用HandlerManager创建event事件
- 事件(event)的逻辑
- javascript事件对象(event)
- C#中事件(event)
- setsockopt设置socket状态
- 参数 PLSQL_OPTIMIZE_LEVEL
- Iphone开发(十一)从plist文件读取列表数据并添加索引
- 读WebTrends的Javascript源码笔记
- 销售信息报表
- 创建事件(event)
- Iphone开发(十二)通过xib文件自定义列表中的行
- arcgis10破解安装
- 颜色RGB如何转成#号值
- 查看ORACLE启动时使用spfile还是pfile
- UNIX系统编程小结(三)----进程相关
- vim templates模板用法介绍
- gdb 基本命令总结
- Android Intent Action 大全