在wpf中,处理鼠标Click事件的时候为啥火弹出这样的问题?如图!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在wpf中,处理鼠标Click事件的时候为啥火弹出这样的问题?如图!相关的知识,希望对你有一定的参考价值。
在处理一个button的Click事件的时候,双击事件里面的Click的时候提示“无法添加事件处理程序”。遇到过的吗?或者有高手知道吗,请帮忙解决!
参考技术A 你还没写按下Click按键所要实现功能的程序代码啊,就会出现上述的错误追问不是的吧,之前我写一个click事件的时候,都是直接双击click处,然后弹出代码编辑框,我才把代码编辑进去的。
追答你试着在你出错的那个界面里输入代码,再试一下就知道行不行了
追问代码是可以输入的,就是运行之后前台实现不了
追答写进去只要确保程序没写错,能实现功能的话,你可以在前台右右下角将这个方法添加进去
追问就是写进去功能没实现
追答那真不清楚了,我写代码写到现在,这样操作都还没出过问题,你问问其他的高手吧,爱莫能助了
参考技术B Blend 只是设计界面的吧,用VS呗 参考技术C 你这是blend呀,又不是vs,试试直接用vs呢?WPF 弹出窗口捕获鼠标双击事件
【中文标题】WPF 弹出窗口捕获鼠标双击事件【英文标题】:WPF popup capturing mouse doubleclick events 【发布时间】:2010-12-11 10:50:54 【问题描述】:在我的主应用程序窗口中,有一些控件,每个控件都会打开一个弹出窗口,向用户显示更多控件。
主应用程序窗口中的其他控件具有 mousedoubleclick 事件处理程序。我的问题是当用户在弹出窗口中双击时,弹出窗口后面的控件正在接收 mousedoubleclick 事件。
我已经尝试将 mousedoubleclick 事件处理程序添加到弹出窗口的父级,并处理该事件,但它仍会进入主应用程序窗口。
private void ParentControl_MouseDoubleClick(object sender, MouseButtonEventArgs e)
e.Handled = true;
我也尝试在弹出窗口的 MouseEnter 事件处理程序中调用 Popup.CaptureMouse(),但该方法总是失败(返回 false)。
void popup_MouseEnter(object sender, MouseEventArgs e)
e.Handled = true;
Popup popup = sender as Popup;
bool success = popup.CaptureMouse();
当弹出窗口打开时,还有其他方法可以防止鼠标事件在主应用程序窗口中触发吗?
【问题讨论】:
吉姆,我似乎无法重现您的问题。澄清一下,当您提到弹出窗口时,这是一个新的 Window 表单,还是主窗口中的一个控件,将其可见性从隐藏/折叠更改为可见。 弹出,我的意思是弹出类。见msdn.microsoft.com/en-us/library/… 您在哪个控件上设置了事件处理程序? 发布您的弹出代码,包括 xaml 和 cs!! 你解决过这个问题吗?我遇到了同样的问题。我尝试在弹出窗口下方的控件(DataGrid)上使用预览...版本的鼠标事件,但没有区别。 【参考方案1】:简单!而不是使用控件的 MouseDoubleClick 事件
private void myControl_MouseDoubleClick(System.Object sender, System.Windows.Input.MouseButtonEventArgs e)
MessageBox.Show("MouseDoubleClick on control");
使用 PreviewMouseDoubleClick 事件。
private void myControl_PreviewMouseDoubleClick(System.Object sender, System.Windows.Input.MouseButtonEventArgs e)
MessageBox.Show("PreviewMouseDoubleClick on control");
现在双击您的控件不会同时调用父级的 DoubleClick 事件。
【讨论】:
这个答案没有解决 OP 希望在弹出窗口上捕获 DoubleClick 事件而不是它下面的控件。以上是关于在wpf中,处理鼠标Click事件的时候为啥火弹出这样的问题?如图!的主要内容,如果未能解决你的问题,请参考以下文章