WPF中在A窗口中的ListView在ListViewItem的MouseDoubleClick弹出新窗口B的时候,会出现弹出的窗口B并不在窗口A的上面,而是在B窗口显示出来后,A窗口会再次获得焦点并显示在B窗口的前面。
比如下面的在A窗口中定义的鼠标双击事件代码:
private void ListViewItem_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
var winB = new WindowMaster();
winB.Show();
}
在双击A窗口中的ListViewItem后,显示出来的winB一完成显示,立刻就会被窗口A挡住。
经过分析认为可能是在鼠标双击事件发生后,在窗口A中鼠标双击发生后,更多的鼠标点击事件被继续执行,导致窗口A被激活到前台。
经过验证,加入一行代码使鼠标点击不被后续处理后,问题解决,解决了问题的完整代码如下:
private void ListViewItem_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
var winB = new WindowMaster();
winB.Show();
e.Handled = true;
}
代码e.Handled=true;阻止了鼠标点击事件后续相关事件的触发和处理。
达叔傻乐(darwin.zuo@163.com)