怎么添加自定义事件 ?C# 20

就是用委托来添加自定义事件的,给个最简单的示例代码就行!谢谢大家... 就是用委托来添加自定义事件的,
给个最简单的示例代码就行!

谢谢大家
展开
 我来答
firev000
2010-07-14 · TA获得超过492个赞
知道小有建树答主
回答量:877
采纳率:0%
帮助的人:638万
展开全部
delegate viod CharEventHandler(object sender, CharEventArgs e);

//自定义了一个触发事件的参数

public class CharEventArgs : EventArgs

{

public char CurrChar;

public CharEventArgs(char CurrChar)

{

this.CurrChar = CurrChar;

}

}

class CharChecker

{

char curr_char;

public event CharEventHandler CharTest;

public char Curr_Char

{

get{return curr_char;}

set

{

if(CharTest!=null)

{

CharEventArgs myeven=new CharEventArgs(value);

CharTest(this,myeven);// 在这里触发事件

curr_char=myeven.CurrChar

}

}

}

}

class AppEvent

{

static void Main()

{

CharChecker chartester=new CharChecker();

chartester.CharTest+=new CharEventHandler(Change_X);//触发事件Chartest时, 绑定到Change_X函数上

chartester.Curr_Char='a'; //运行Curr_Char的Set方法, 触发事件

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' || e.CurrChar='X')

{

Console.Write("触发的字符是x,");

Console.Write("把x替为:");

e.CurrChar='?';

}

else

Console.Write("触发的字符不是x,");

}

}

运行结果:

触发的字符不是x,事件处理的结果:a

触发的字符不是x,事件处理的结果:b

触发的字符是x,把x替为:?
启岩
2010-07-14 · TA获得超过1851个赞
知道小有建树答主
回答量:809
采纳率:0%
帮助的人:630万
展开全部
static void Main(string[] args)
{
PrintWordsDel mDel;
mDel = PrintWords;
mDel("你好!");

Console.ReadKey();
}
public delegate void PrintWordsDel(string words);
static void PrintWords(string words)
{
Console.WriteLine(words);
}

以上是直接使用委托,下面用委托加事件触发:

class Program
{
static void Main(string[] args)
{

CEventDel mEventDel = new CEventDel();
mEventDel.mDel += new PrintWordsDel(mEventDel.PrintWordsHandler);
mEventDel.PrintWords("你好!");

Console.ReadKey();
}

}
public delegate void PrintWordsDel(string words); //定义委托事件
public class CEventDel
{
public event PrintWordsDel mDel; //委托变量

public void PrintWords(string words) //调用该事件将触发PrintWordsHandler
{
if (mDel != null)
{
mDel(words);
}
}

public void PrintWordsHandler(string words)
{
Console.WriteLine(words);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
depluin
2010-07-14 · TA获得超过3179个赞
知道大有可为答主
回答量:3378
采纳率:75%
帮助的人:2432万
展开全部
public delegate void WebUserControlButtonClickHandler(object sender, EventArgs e);
public event WebUserControlButtonClickHandler ClickHandler;

然后再需要的时候检查事件委托是否不为空并引发,比如按下按钮时
protected void Button1_Click(object sender, EventArgs e)
{
if (ClickHandler != null)
{
ClickHandler(sender, e);
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式