.net – PresentationCore.dll中出现’System.StackOverflowExce
发布时间:2020-12-14 01:59:45 所属栏目:Windows 来源:网络整理
导读:我有一个 WPF UserControl,我尝试在其中实现自定义MouseClick(因为WPF(用户)控件上没有MouseClick事件)事件. 我得到以下内容: 一些代码: /// summary/// Occurs when users left clicks the MyControl./// /summarypublic event MouseButtonEventHandler M
我有一个
WPF UserControl,我尝试在其中实现自定义MouseClick(因为WPF(用户)控件上没有MouseClick事件)事件.
我得到以下内容: 一些代码: /// <summary> /// Occurs when users left clicks the MyControl. /// </summary> public event MouseButtonEventHandler MouseClick { add { AddHandler(MouseClickEvent,value); } remove { RemoveHandler(MouseClickEvent,value); } } protected virtual void OnMouseClick(MouseButtonEventArgs e) { base.RaiseEvent(e); //this.RaiseEvent(new RoutedEventArgs(MouseClickEvent,this)); } protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e) { base.OnMouseLeftButtonUp(e); if (!this.movedAfterMouseDown) { OnMouseClick(e); } this.gotLeftButtonDown = false; this.movedAfterMouseDown = false; } 那么,问题出在哪里? 更新1 protected virtual void OnMouseClick(MouseButtonEventArgs e) { //base.RaiseEvent(e); MouseButtonEventArgs args = new MouseButtonEventArgs(e.MouseDevice,e.Timestamp,e.ChangedButton); this.RaiseEvent(args); } 值不能为空. 更新2 我成功实现的其他自定义事件(没有问题的工作) – SelectedChanged: static void OnIsSelectedChanged(DependencyObject source,DependencyPropertyChangedEventArgs e) { var s = (MyControl)source; s.RaiseEvent(new RoutedEventArgs(SelectedChangedEvent,s)); } 更新3 System.Windows.Controls.Control的OnPreviewMouseDoubleClick实现: protected virtual void OnPreviewMouseDoubleClick(MouseButtonEventArgs e) { base.RaiseEvent(e); } 更新5(对于坦克中的人) class Foo : FrameworkElement { event EasterCameEvent; // I named it MouseClick public DoSomething() { EasterCameArgs args= ... if (Date.Now = EasterDate) OnEasterCame(args) } protected virtual void OnEasterCame(EasterCameArgs e) { base.RaiseEvent(e); } } 解决方法protected virtual void OnMouseClick(MouseButtonEventArgs e) { MouseButtonEventArgs args = new MouseButtonEventArgs(e.MouseDevice,e.ChangedButton); // Don't forget this args.RoutedEvent = MouseClickEvent; base.RaiseEvent(args); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 程序是怎样跑起来的第十一章
- windows-server-2008-r2 – Slipstream SP1到Windows Serve
- WiX:.Net 3.5先决条件
- .Net DateTime到DOS日期32位转换
- windows – 你怎么有一个被叫bat文件而不是杀掉它的蝙蝠文件
- 在Windows服务中抛出异常
- windows-server-2008 – 不明原因的慢速千兆网络速度
- Windows8 Metro界面下的StreamSocket 发送数据与接收数据
- 启动 – 无盘服务器2012上的第二个NIC“无法正常工作”
- powershell – 如何在Add-AzureAccount中使用Microsoft(非组
推荐文章
站长推荐
- 文件共享 – NTFS ACL:对象和容器的不一致有什么
- .net – 在IIS 7.5中托管WCF与Windows服务的性能
- windows – 将PID从任务列表传递到taskkill,以通
- 如何在Windows 7上设置Drupal Console?
- group-policy – 在Windows 10中配置打开文件资源
- 在Windows机器上无法使用sqlalchemy连接到本地my
- 如何实现windows命令提示符的tab补全
- windows-7 – 跳过新的Windows 7用户选择并转到登
- 为Windows 2012 CA生成新的自签名CA.
- windows – 如何从页眉和/或页脚确定PE可执行文件
热点阅读