seeWriting C# Custom Events
http://www.ondotnet.com/pub/a/dotnet/2002/04/15/events.html
http://www.ondotnet.com/pub/a/dotnet/2002/04/15/events.html
解决方案 »
- 为什么我把鼠标,移动到微软定义的函数上,就有显示注释的提示。
- FTP通信测试问题
- WPF Image控件Source属性如何支持swf
- Console.Write写字符串异常,求解答!
- 类内部事件,在外部触发调用的问题
- 问一个关于泛型的问题
- 请教:如何从Udl文件中取出链接字符串?如何取得用户名,密码,数据库名?
- 如何将C#开发的程序在没有安装.net framework的机器上使用?
- 拖放的时候如何使用自己的关标?
- 如何把图片储存到SQL SERVER2000中
- 请各位高手出手相救,怎么把Excel的数据导入Sql Server2000的数据表里?c#
- EnableVisualStyles();后,怎样使一些控件背景透明
public delegate void someDelegate(Arg list);
//声明一个事件
public event someDelegate OnSome;//引发事件
if (OnSome != null)
{
OnSome(Value List);
}
using System;
public delegate void MyDelegate(); // delegate declarationpublic interface I
{
event MyDelegate MyEvent;
void FireAway();
}public class MyClass: I
{
public event MyDelegate MyEvent; public void FireAway()
{
if (MyEvent != null)
MyEvent();
}
}public class MainClass
{
static private void f()
{
Console.WriteLine("This is called when the event fires.");
} static public void Main ()
{
I i = new MyClass(); i.MyEvent += new MyDelegate(f);
i.FireAway();
}
}
写一个类,此类包含了自定义事件: onSendMsg。
文件名:ChatServer.cs
public class ChatServer
{
public delegate void MyEventHandler(string msg);
public event MyEventHandler onSendMsg;
public void SendMsg()
{
onSendMsg("开始发送消息!");
}
}
文件名:Form1.cs
///////////////////////////////////
//类事件的处理代码如下
private void SendMsgTest()
{
//创建ChatServer类的实例
Server f_Server;
f_Server = new Server();
f_Server.onSendMsg += new Server.MyEventHandler(this.OnSendMsg);
//调用 f_Server的SendMsg()函数
f_Server.SendMsg();
}
//处理 onSendMsg 事件代码
protected void OnSendMsg(string msg)
{
//输出调试信息
Console.WriteLine(msg);
}
public class MyEventArgs:EventArgs
{
public int I;
public MyEventArgs(int i)
{
I=i;
}
}// 定义一个delegate,该delegate返回void,有两个参数:object sender, EventArgs e
delegate void MyEventHandler(object sender, MyEventArgs e);class EventClass
{
// 定义事件,delegate是刚刚定义的delegate
public event MyEventHandler MyEvent; private int i;
public int I
{
get
{
return i;
}
set
{
i=value;
if (value>100)
{
// 如果将I的值改为100,则触发MyEvent事件的发生
if (MyEvent != null)
{
MyEventArgs args = new MyEventArgs(value); // 定义一个EventArgs对象
MyEvent(this, args); // 触发事件
}
}
}
}}class MainClass
{
// 定义一个处理事件的程序
public static void EventTrigged(object sender, MyEventArgs e)
{
Console.WriteLine("您输入的是" + e.I + ",事件被触发。");
} static void Main()
{
EventClass e= new EventClass(); // 指定事件的处理程序
e.MyEvent += new MyEventHandler(EventTrigged); int i;
do
{
Console.Write("请输入一个数值,大于100会触发事件的发生,输入0则退出:");
i = Int32.Parse(Console.ReadLine());
if (i==0)
{
break;
}
e.I = i;
}
while (true); Console.ReadLine();
}}