WPF-下一屏幕上的排队鼠标事件触发器



简介我有一个WPF应用程序。当我点击/双击一个按钮以显示下一个屏幕时,这是用鼠标左键向下和鼠标左键向上捕获的。-鼠标左键向下使按钮变暗-鼠标左键将我发送到下一个屏幕

问题:如果我"垃圾邮件",或者有时只点击按钮2-3次(在这种情况下我们说是3次),它就会开始加载下一个屏幕。当显示下一个屏幕时,在队列中留下两次鼠标点击,如果鼠标在第二个屏幕上的另一个新按钮上,则点击

我试过这样的东西:

void LayoutRoot_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
Mouse.OverrideCursor = Cursors.Wait;
if (this.IsVisible && this.IsLoaded)
OnButtonPatient();
}

但这两个属性都设置为true。我想是对的,因为当鼠标事件触发时,我可以看到按钮。事件可以解释为:

  1. 3次鼠标点击
  2. 鼠标光标=等待光标
  3. 加载下一个屏幕
  4. 鼠标光标=正常
  5. 鼠标光标=等待光标
  6. 单击"下一步"按钮

我该如何处理?我不希望在上一个屏幕上发生的鼠标事件继续到我的下一个屏幕。问候!

我尝试了一个使用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();
}

相关内容

  • 没有找到相关文章

最新更新