using System;
using System.Collections.Generic;
using System.Text;namespace ConsoleApplication1
{
delegate void CharEventHandler(object sender,CharEventArgs e); //为事件定义一个代理
public class CharEventArgs : EventArgs //创建一个包含事件信息的类
{
public char CurrChar;
public CharEventArgs(char CurrChar)
{
this.CurrChar=CurrChar;
}
}
class CharChecker //创建一个包含事件成员的类
{
private char curr_char;
public event CharEventHandler CharTest; //定义事件成员
public char Curr_Char //创建触发事件的的方法或属性成员
{
get
{
return curr_char;
}
set
{
if (CharTest != null)
{
CharEventArgs myeven = new CharEventArgs(value);
curr_char = myeven.CurrChar;
CharTest(this, myeven); //触发事件
}
}
}
}
class Program
{
static void Main(string[] args)
{
CharChecker chartester = new CharChecker();
chartester.CharTest += new CharEventHandler(Change_X); //关联事件处理方法和事件
chartester.Curr_Char = 'a';
Console.WriteLine("事件处理结果 :{0} ", chartester.Curr_Char);
chartester.Curr_Char = 'b';
Console.WriteLine ("事件处理结果 :{0} ",chartester.Curr_Char );
chartester.Curr_Char = 'x';
Console.WriteLine("{0}", chartester.Curr_Char);
Console.WriteLine(); }
static void Change_X (object source ,CharEventArgs e)
{
if (e.CurrChar == 'x')
{
Console.Write("触发的字母是 x ,");
Console.Write("把 x 替换成 :");
e.CurrChar = '?';
}
else
{
Console.Write("触发的字符不是 x,");
e.CurrChar = 'c';
}
}
}
}运行结果:
触发的字符不是 x,事件处理结果 :b
触发的字符不是 x,事件处理结果 :a
触发的字符不是 x,把 x 替换成 :x为什么:
e.CurrChar = '?';
和
e.CurrChar = 'c';
都没有执行呢?
using System.Collections.Generic;
using System.Text;namespace ConsoleApplication1
{
delegate void CharEventHandler(object sender,CharEventArgs e); //为事件定义一个代理
public class CharEventArgs : EventArgs //创建一个包含事件信息的类
{
public char CurrChar;
public CharEventArgs(char CurrChar)
{
this.CurrChar=CurrChar;
}
}
class CharChecker //创建一个包含事件成员的类
{
private char curr_char;
public event CharEventHandler CharTest; //定义事件成员
public char Curr_Char //创建触发事件的的方法或属性成员
{
get
{
return curr_char;
}
set
{
if (CharTest != null)
{
CharEventArgs myeven = new CharEventArgs(value);
curr_char = myeven.CurrChar;
CharTest(this, myeven); //触发事件
}
}
}
}
class Program
{
static void Main(string[] args)
{
CharChecker chartester = new CharChecker();
chartester.CharTest += new CharEventHandler(Change_X); //关联事件处理方法和事件
chartester.Curr_Char = 'a';
Console.WriteLine("事件处理结果 :{0} ", chartester.Curr_Char);
chartester.Curr_Char = 'b';
Console.WriteLine ("事件处理结果 :{0} ",chartester.Curr_Char );
chartester.Curr_Char = 'x';
Console.WriteLine("{0}", chartester.Curr_Char);
Console.WriteLine(); }
static void Change_X (object source ,CharEventArgs e)
{
if (e.CurrChar == 'x')
{
Console.Write("触发的字母是 x ,");
Console.Write("把 x 替换成 :");
e.CurrChar = '?';
}
else
{
Console.Write("触发的字符不是 x,");
e.CurrChar = 'c';
}
}
}
}运行结果:
触发的字符不是 x,事件处理结果 :b
触发的字符不是 x,事件处理结果 :a
触发的字符不是 x,把 x 替换成 :x为什么:
e.CurrChar = '?';
和
e.CurrChar = 'c';
都没有执行呢?
解决方案 »
- 请问怎么通过点击父窗体菜单栏控件控制子窗体控件内容?
- wsdl方式添加webservices后,如何加cookie
- C#如何在执行bindingNavigator控件上的按钮前,先做一个判断?
- TCP SOCKET协议问题
- 对GRID中某行编辑后,返回GRID所在页面时,如何定位到编辑行
- 請問誰會寫遊戲外掛或者外掛教程也可以寫些
- 不知道是第几个简单的问题了拉............等到给你分啊 快来啊..
- 初学者,C#与数据库,求程序,最简的。
- 看了一下CHIN-PUB的《C#高级程序员指南》目录,感觉不错,不知有谁读过
- C# FDFS client 下载的时候如果buffer 设置大于1024 得到的文件不正确,无法正常打开,请教高手看看,谢谢,代码如下
- 下了vs2008,4G那个,还用单下MSDN2008吗
- 接口的显式实现不是私有的么?怎么还可以外部调用?
每次都CharEventArgs myeven = new CharEventArgs(value);
也就是每次都 new 了一个,而且你的事件也都是set的时候才会触发.
触发的字符不是 x,事件处理结果 :b
触发的字母是 x ,把 x 替换成 :x请按任意键继续. . .这个和楼主写的可不一样..
的时候并没有set CharChecker对象的Curr_Char属性
即chartester.curr_char难道你认为这个chartester.curr_char和CharEventArgs.CurrChar 有什么关系?
CharTest(this, myeven); //触发事件
顺序反了 应该触发事件后,再设置值吧
char 是值类型