从退出应用到第五人格自定义退出扣人格分吗eventhandler,还能怎么玩

自定义按钮步骤总结_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&100W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
自定义按钮步骤总结
你可能喜欢C#解决EventHandler参数无法传递问题
1、MouseEventHandler和EventHandler传递参数的局限性分析
开发过程中,特别是使用自定义控件时,常常需要对一个控件的click,mouseDown,mouseUp等事件的处理进行重新定义,以满足实际工程应用和要求。常用的方法如下:
button1.Click-=newEventHandler(ButtonClick_Handler);
button1.MouseUp-=newMouseEventHandler(ButtonUp_Handler);
button1.Click+=newEventHandler(ButtonClick_Handler);
MouseUp+=newMouseEventHandler(ButtonUp_Handler);
可以看到,这里是通过EventHandler和MouseEventHandler这两个委托来能click和mouseup赋值。
CSDN上对这两个委托的定义如下:EventHandler:
.NET Framework 中的事件模型基于具有事件委托,该委托将事件与事件处理程序连接。引发事件需要两个元素:
标识对事件提供响应的方法的委托。
保存事件数据的类。
publicdelegatevoidEventHandler(Objectsender,EventArgse);
publiceventEventHandlerNoDataEventH
MouseEventHandler:
表示将处理窗体、控件或其他组件的 MouseDown、MouseUp 或 MouseMove 事件的方法。
委托的原型:
publicdelegatevoidMouseEventHandler(
Objectsender,
MouseEventArgse
这两个委托都有两个参数,其中Sender可以通过.net的机制来捕获,而EventArgs和MouseEventArgs 该如何使用呢?或者说如何给它赋值?暂时没有办法,还请高人指点。
其实这个问题可以通过匿名委托来解决。
2、使用匿名委托给一些EventHandler/MouseEventHandler的方法传参数
关键代码如下:
publicvoidsetSeatButtonMove_EventHandler(CSeatButton seatBtn,ObjectparentForm)
///* 常规事件加载方式 */
//seatBtn.button1.Click -= new EventHandler(seatButtonClick_Handler);
//seatBtn.button1.MouseUp -= new MouseEventHandler(seatButtonUp_Handler);
//seatBtn.button1.Click += new EventHandler(seatButtonClick_Handler);
//seatBtn.button1.MouseUp += new MouseEventHandler(seatButtonUp_Handler);
/* 匿名事件加载方式 */
seatBtn.button1.Click-=delegate(Objecto,EventArgse){seatButtonClick_Handler(seatBtn.button1,parentForm);};
seatBtn.button1.MouseUp-=delegate(Objecto,MouseEventArgse){seatButtonUp_Handler(seatBtn.button1,parentForm);};
seatBtn.button1.Click+=delegate(Objecto,EventArgse){seatButtonClick_Handler(seatBtn.button1,parentForm);};
seatBtn.button1.MouseUp+=delegate(Objecto,MouseEventArgse){seatButtonUp_Handler(seatBtn.button1,parentForm);};
publicvoidseatButtonClick_Handler(objectsender,objectformOfSender)
stringformName=((Form)formOfSender).Name.Trim();
if(formName.Equals("Form1"))
MessageBox.Show("In Form1,click a button!");
if(formName.Equals("Form2"))
MessageBox.Show("In Form2,click a button!");
通过类似下面的语句:
delegate(Objecto,EventArgse){seatButtonClick_Handler(seatBtn.button1,parentForm);};
我们可能delegate后面接一个函数或者一些参数语句来实现对对自定义事件处理函数的参数传递。
【C#】往按钮事件中传递自定义参数
c# 事件 EventHandler
C#中关于EventHandler使用的一些理解
C# EventHandler and Delegate(委托的使用)
C# EventHandler委托事件小结
C#事件回调委托EventHandler
C#委托和事件(Delegate、Event、EventHandler、EventArgs)
c# 中 EventHandler&TEventArgs&的 异步调用
C# EventHandler 委托
C#委托和事件(Delegate、Event、EventHandler、EventArgs
没有更多推荐了,当前位置:
郁闷!WPF自定义路由事件,事件处理函数均与委托“SystemWindowsRoutedEventHandler”不匹配
郁闷!WPF自定义路由事件,事件处理函数均与委托“SystemWindowsRoutedEventHandler”不匹配
来源:网络整理&&&&&时间: 10:57:22&&&&&关键词:
关于网友提出的“郁闷!WPF自定义路由事件,事件处理函数均与委托“SystemWindowsRoutedEventHandler”不匹配”问题疑问,本网通过在网上对“郁闷!WPF自定义路由事件,事件处理函数均与委托“SystemWindowsRoutedEventHandler”不匹配”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题:郁闷!WPF自定义路由事件,事件处理函数均与委托“SystemWindowsRoutedEventHandler”不匹配
描述:本帖最后由 xifenglie200 于
16:11:22 编辑
我自定义了一个MainControl,里面包括一个Calendar,我现在想取出Calendar的SelectDate,于是自定义路由事件:
&public&static&readonly&RoutedEvent&CalendarSelectEvent&=&EventManager.RegisterRoutedEvent
&&&&&&&&&&&&("CalendarSelect",&RoutingStrategy.Bubble,&typeof(EventHandler&CalendarSelectedDateChangeEventArgs&),&typeof(MainControl));
事件内容:
public&class&CalendarSelectedDateChangeEventArgs&:&System.Windows.RoutedEventArgs
&&&&&&&&public&CalendarSelectedDateChangeEventArgs(RoutedEvent&routedEvent,&object&source)
&&&&&&&&&&&&:&base(routedEvent,&source)&{&}
&&&&&&&&public&DateTime&SelectedDate&
&&&&&&&&{&&&}
事件包装:
&public&event&RoutedEventHandler&CalendarSelect
&&&&&&&&&&&&add&{&this.AddHandler(CalendarSelectEvent,&value);&}
&&&&&&&&&&&&remove&{&this.RemoveHandler(CalendarSelectEvent,&value);&}
事件处理:
&private&void&currencyLeft_CalendarSelect(object&sender,&CalendarSelectedDateChangeEventArgs&e)
&&&&&&&&&&&&lstExtremeView&=&CCurrencyCtrl.Instance.ListSkillExtremeByDate(e.SelectedDate);
&&&&&&&&&&&&this.ExtremeListView.ItemsSource&=&lstExtremeV&
然后编译总出现如下错误:
错误 2 “currencyLeft_CalendarSelect”的重载均与委托“System.Windows.RoutedEventHandler”不匹配
怎么解决?小弟已经耗了一天了,坐等大牛指点!
以上介绍了“郁闷!WPF自定义路由事件,事件处理函数均与委托“SystemWindowsRoutedEventHandler”不匹配”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1408677.html
上一篇: 下一篇:在C#使用字典存储事件示例及实现自定义事件访问器
转载 &更新时间:日 14:19:22 & 投稿:goldensun
这篇文章主要介绍了在C#使用字典存储事件示例及实现自定义事件访问器的方法,是C#事件编程中的基础知识,需要的朋友可以参考下
使用字典存储事件实例
accessor-declarations 的一种用法是公开很多事件但不为每个事件分配字段,而是使用字典来存储这些事件实例。这只在具有很多事件但您预计大多数事件都不会实现时才有用。
public delegate void EventHandler1(int i);
public delegate void EventHandler2(string s);
public class PropertyEventsSample
private System.Collections.Generic.Dictionary&string, System.Delegate& eventT
public PropertyEventsSample()
eventTable = new System.Collections.Generic.Dictionary&string, System.Delegate&();
eventTable.Add("Event1", null);
eventTable.Add("Event2", null);
public event EventHandler1 Event1
lock (eventTable)
eventTable["Event1"] = (EventHandler1)eventTable["Event1"] +
lock (eventTable)
eventTable["Event1"] = (EventHandler1)eventTable["Event1"] -
public event EventHandler2 Event2
lock (eventTable)
eventTable["Event2"] = (EventHandler2)eventTable["Event2"] +
lock (eventTable)
eventTable["Event2"] = (EventHandler2)eventTable["Event2"] -
internal void RaiseEvent1(int i)
EventHandler1 handler1;
if (null != (handler1 = (EventHandler1)eventTable["Event1"]))
handler1(i);
internal void RaiseEvent2(string s)
EventHandler2 handler2;
if (null != (handler2 = (EventHandler2)eventTable["Event2"]))
handler2(s);
public class TestClass
public static void Delegate1Method(int i)
System.Console.WriteLine(i);
public static void Delegate2Method(string s)
System.Console.WriteLine(s);
static void Main()
PropertyEventsSample p = new PropertyEventsSample();
p.Event1 += new EventHandler1(TestClass.Delegate1Method);
p.Event1 += new EventHandler1(TestClass.Delegate1Method);
p.Event1 -= new EventHandler1(TestClass.Delegate1Method);
p.RaiseEvent1(2);
p.Event2 += new EventHandler2(TestClass.Delegate2Method);
p.Event2 += new EventHandler2(TestClass.Delegate2Method);
p.Event2 -= new EventHandler2(TestClass.Delegate2Method);
p.RaiseEvent2("TestString");
// Keep the console window open in debug mode.
System.Console.WriteLine("Press any key to exit.");
System.Console.ReadKey();
TestString
实现自定义事件访问器
事件是特殊类型的多路广播委托,只能从声明它的类中调用。客户端代码通过提供对应在引发事件时调用的方法的引用来订阅事件。这些方法通过事件访问器添加到委托的调用列表中,事件访问器类似于属性访问器,不同之处在于事件访问器被命名为 add 和 remove。在大多数情况下都不需要提供自定义的事件访问器。如果您在代码中没有提供自定义的事件访问器,编译器会自动添加事件访问器。但在某些情况下,您可能需要提供自定义行为。下面的示例演示如何实现自定义的 add 和 remove 事件访问器。虽然可以替换这些访问器内的任何代码,但建议您在添加或移除新的事件处理程序方法之前先锁定该事件。
event EventHandler IDrawingObject.OnDraw
lock (PreDrawEvent)
PreDrawEvent +=
lock (PreDrawEvent)
PreDrawEvent -=
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 退出qq后还能接收消息 的文章

 

随机推荐