简介我有一个WPF应用程序。当我点击/双击一个按钮以显示下一个屏幕时,这是用鼠标左键向下和鼠标左键向上捕获的。-鼠标左键向下使按钮变暗-鼠标左键将我发送到下一个屏幕
问题:如果我"垃圾邮件",或者有时只点击按钮2-3次(在这种情况下我们说是3次),它就会开始加载下一个屏幕。当显示下一个屏幕时,在队列中留下两次鼠标点击,如果鼠标在第二个屏幕上的另一个新按钮上,则点击
我试过这样的东西:
void LayoutRoot_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
Mouse.OverrideCursor = Cursors.Wait;
if (this.IsVisible && this.IsLoaded)
OnButtonPatient();
}
但这两个属性都设置为true。我想是对的,因为当鼠标事件触发时,我可以看到按钮。事件可以解释为:
- 3次鼠标点击
- 鼠标光标=等待光标
- 加载下一个屏幕
- 鼠标光标=正常
- 鼠标光标=等待光标
- 单击"下一步"按钮
我该如何处理?我不希望在上一个屏幕上发生的鼠标事件继续到我的下一个屏幕。问候!
我尝试了一个使用StackPanel作为控件的简单示例。虽然我不确定如果你使用按钮,为什么不使用按钮点击事件(为什么要移动按钮向上?)
private int count = 0;
private void StackPanel_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (count == 0 && (sender as StackPanel).IsMouseOver)
{
Mouse.OverrideCursor = Cursors.Wait;
count++;
}
e.Handled = true;
}
private void StackPanel_OnMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if (count == 1 && (sender as StackPanel).IsMouseOver)
{
Mouse.OverrideCursor = Cursors.Arrow;
count++;
}
e.Handled = true;
}
我建议在MouseUp事件触发时检查第一个窗口/屏幕上的IsMouseOver属性。这将允许您筛选出新窗口正在阻止第一个窗口的事件。
void LayoutRoot_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
Mouse.OverrideCursor = Cursors.Wait;
if (this.IsVisible && this.IsLoaded && this.IsMouseOver)
OnButtonPatient();
}