c#项目中遇到的add event 的一个小例子
2011-11-23 18:21
399 查看
很长时间没有做过客户端的东西了,最近在WPF。今天在code refactor的过程中尝试了一把add event.
Background:
分别有Text的Datepicker和ComboBox的Datepicker
打算把单个的Calendar拿出来做一个usercontrol.
把选中的日期付给textbox,也就是说这个usercontrol里需要在选中日期的事件里来处理。
选中日期的事件:
事件的参数里需要一个string的text值,该值就是popup弹出时选中的日期,有了以下的类
因为c#本身的事件EventHandler参数发生了变化,所以重新定义了一个delegate:
接下来是真正add的event,只需在委托前加event关键字
以下是在选中日期事件时调用的方法,即定义的事件如何触发
这样就完成对usercontrol添加事件的操作了。
接下来在TextBoxDatepicker的类中使用该事件:
PS: 之前在做server端的时候,做了些AsynInvoke的东西,还有一些回调,状态什么的。由于做的很浅,好多东西没掌握住,时间一长也遗忘了很多。
现在通过这个机会,把基本委托和事件掌握了,不过高级的应用还得靠以后多多练习,多做一些这方面的东西。
Background:
分别有Text的Datepicker和ComboBox的Datepicker
打算把单个的Calendar拿出来做一个usercontrol.
把选中的日期付给textbox,也就是说这个usercontrol里需要在选中日期的事件里来处理。
选中日期的事件:
private void calender_SelectedDatesChanged(object sender, SelectionChangedEventArgs e) { if (calender.SelectedDate.HasValue) { Myeventargs args = new Myeventargs(); args.Text = calender.SelectedDate.Value.ToShortDateString(); OnSelectDateComplete(args); } CalendarPopup.IsOpen = false; }
事件的参数里需要一个string的text值,该值就是popup弹出时选中的日期,有了以下的类
public class Myeventargs : EventArgs { private string text; public string Text { get { return text; } set { text = value; } } }
因为c#本身的事件EventHandler参数发生了变化,所以重新定义了一个delegate:
public delegate void MyEventHandler(object sender, Myeventargs e);
接下来是真正add的event,只需在委托前加event关键字
public event MyEventHandler SelectDateComplete;
以下是在选中日期事件时调用的方法,即定义的事件如何触发
protected virtual void OnSelectDateComplete(Myeventargs e) { if (SelectDateComplete != null) SelectDateComplete(this, e); }
这样就完成对usercontrol添加事件的操作了。
接下来在TextBoxDatepicker的类中使用该事件:
private void CalendarHelper_SelectDateComplete(object sender, Myeventargs e) { this.Text = e.Text.ToString(); this.Focus(); }
PS: 之前在做server端的时候,做了些AsynInvoke的东西,还有一些回调,状态什么的。由于做的很浅,好多东西没掌握住,时间一长也遗忘了很多。
现在通过这个机会,把基本委托和事件掌握了,不过高级的应用还得靠以后多多练习,多做一些这方面的东西。
相关文章推荐
- c# 学习笔记之九 事件(event)的使用,一个简单例子揭示机理
- C#中ArrayList 与 string、string[]数组 的转换 (转学习:今天做项目时遇到一个arrylist转换问题,做记录)
- C# event 的一个例子
- 一个C#中使用 event 和 delegate的小例子。
- c#学习笔记之九 事件(event)的使用,一个简单的例子揭示其设计理念
- C# event 的一个例子
- C#一个委托的例子
- 收了100元辛苦费,写了一个最简单的C#ASP.NET的3层架构例子代码
- 解决当导入一个android项目到my eclipse时遇到的问题
- Flex中如何在Tree控件中指定一个自定义的label函数使其返回的标签名字为叶项目的名称的例子
- 一个简单的小例子让你明白c#中的委托-终于懂了!
- C#的一个小例子
- C#的一个双缓冲显示的例子
- 在一个开源项目的开发中遇到的问题
- 开发Struts 2项目遇到的一个问题,就是在struts-tags标签库下没有了s:datetimepicker标签的解决办法
- C# Remoting的一个简单例子
- [C#] 一个简单的C#多线程间同步的例子
- C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子。
- 一个项目中遇到的若干问题-提出问题-分析问题-解决问题
- 一个完整的大型软件项目经验是非常宝贵的,大家遇到这样的机会要学会把握好机会