class demo
{
static String Name;
public static void Main()
{
Name = Console.ReadLine();
}
}
有这样的一个简单的类,就是更改Name.我要的事件例子是,如果输入的值跟原来的一样,没有任何特殊的操作,如果输入的值和原来的值不同,则触发一个事件,输出"名字改变了".
这里仅仅是要练习一下事件而已,所以就不要给出别的替代方法了.谢谢.
{
static String Name;
public static void Main()
{
Name = Console.ReadLine();
}
}
有这样的一个简单的类,就是更改Name.我要的事件例子是,如果输入的值跟原来的一样,没有任何特殊的操作,如果输入的值和原来的值不同,则触发一个事件,输出"名字改变了".
这里仅仅是要练习一下事件而已,所以就不要给出别的替代方法了.谢谢.
解决方案 »
- 请教一个问题,希望大家能回答一下
- 写过Window Service的大神请进
- 请问VS2005 Express和VS2008 Express资源占用率差别大吗?
- 安装VS2005后,关于Office的信息
- datagridview 某列有些行用COMBOX 有些行用TEXTBOX 怎么实现
- 万能树状列表
- 在线求教难题:从配置文件中取出多个方法名及程序集路径,将配置文件中的一组方法挂接到程序的某个事件上。即根据配置文件中的设置动态的绑定到程序的指定的事件上
- Gridview 显示问题
- 关于参数传递问题,高手帮忙
- 求教怎么样将640*480的图像转换成480*360的图像?
- 截取字符串问题,请高手帮忙!
- 做了个用户登录,按确定后就应该能打开数据库看到数据,怎么做?
{
public string OldName;
public string NewName;
} public delegate void NameChanged(NameChangeArgs e); class demo
{
public static event NameChanged NameChanged;
static string _name = null;
static String Name
{
get
{
return _name;
}
set
{
if(value != _name)
{
if( NameChanged != null)
{
NameChangeArgs e = new NameChangeArgs();
e.OldName = _name;
e.NewName = value; NameChanged( e);
}
_name = value;
}
}
}
}
using System.Collections.Generic;
using System.Text;namespace EventApp
{
public delegate void newEventHandler(object sender,int addNum);
class myEvent
{
//事件
public event newEventHandler eee; // test
private int i;
/// <summary>
/// 构造函数
/// </summary>
public myEvent()
{
this.i = 0;
}
/// <summary>
/// 属性变化,触发事件
/// </summary>
public int I
{
get
{
return i;
}
set
{
i = value;
if (eee != null)
{
eee(this, this.I);
}
}
}
/// <summary>
/// i增加
/// </summary>
public void add()
{
this.I++;
//if (eee != null)
//{
// eee(this, this.I);
//}
}
}
}
2222222222222.实例化Event类后using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace EventApp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnEvent_Click(object sender, EventArgs e)
{
me.add();
}
/// <summary>
/// 事件处理过程
/// </summary>
/// <param name="sender"></param>
/// <param name="i"></param>
private void me_eee(object sender, int i)
{
label1.Text = i.ToString();
}
/// <summary>
/// 添加事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_Load(object sender, EventArgs e)
{
this.me.eee += new newEventHandler(this.me_eee);
}
}
}
1:声明委派类
2:定义System.EventArgs类的派生类,存储事件相关的信息
3:在可能触发事件的类中使用关键字event声明事件,形式如下
event delegateName eventObject其中event关键字声明一个全新的事件eventObject,由于事件的行为是利用委派类对象的支持所完成,那么delegateName既为支持处理事件的委派名称。
4:定义事件处理程序的方法成员
5:使用委派对象封装方法成员
6:引用委派方法处理触发事件
{
public int intValue;
public AddEvevtArgs(int intValue)
{
this.intValue = intValue;
}
}public class EventTest
{
public event AddEvevtHandler AddEvent;
public int Sum = 0;
public EventTest()
{
m_al = new ArrayList();
AddEvent +=new AddEvevtHandler(EventTest_AddEvent);
} public void Add(int intValue)
{
m_al.Add(intValue);
AddEvevtArgs e = new AddEvevtArgs(intValue);
if (AddEvent != null)
{
AddEvent(this, e);
}
}
public void Summary()
{
Sum = 0;
foreach (int intValue in m_al)
{
Sum += intValue;
}
}
private ArrayList m_al; private void EventTest_AddEvent(object sender, AddEvevtArgs e)
{
Sum += e.intValue;
}
}
public class case1
{
private EventTest test; public case1()
{
test = new EventTest();
test.AddEvent +=new AddEvevtHandler(test_AddEvent);
} public void DoTest()
{
for (int i = 0; i < 10; i++)
{
test.Add(i);
}
Console.WriteLine(test.Sum); Console.WriteLine("Summary: ");
test.Summary();
Console.WriteLine(test.Sum);
}
}class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
case1 t = new case1();
t.DoTest();
Console.Read();
}
}