gpt4 book ai didi

WPF:按钮单击+双击问题

转载 作者:行者123 更新时间:2023-12-03 20:19:49 24 4
gpt4 key购买 nike

我必须以不同的 react 处理 WPF 应用程序中按钮的单击和双击。
不幸的是,在双击时,WPF 会触发两个单击事件和一个双击事件,因此很难处理这种情况。

它试图使用计时器解决它但没有成功......我希望你能帮助我。

让我们看看代码:

private void delayedBtnClick(object statInfo)
{
if (doubleClickTimer != null)
doubleClickTimer.Dispose();
doubleClickTimer = null;

this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new VoidDelegate(delegate()
{
// ... DO THE SINGLE CLICK ACTION
}));
}

private void btn_Click(object sender, RoutedEventArgs e)
{
if (doubleClickTimer == null)
doubleClickTimer = new Timer(delayedBtnClick, null, System.Windows.Forms.SystemInformation.DoubleClickTime, Timeout.Infinite);
}
}
}

private void btnNext_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (doubleClickTimer != null)
doubleClickTimer.Change(Timeout.Infinite, Timeout.Infinite); // disable it - I've tried it with and without this line
doubleClickTimer.Dispose();
doubleClickTimer = null;

//.... DO THE DOUBLE CLICK ACTION
}

问题是在双击“双击操作”之后调用了“单击操作”。奇怪的是我设置了 doubleClickTimer双击为空,但在 delayedBtnClick这是真的:O

我已经尝试使用更长的时间, bool 标志和锁定...

你有什么想法?

最好的事物!

最佳答案

如果您设置了 RoutedEvente.Handledtrue处理后 MouseDoubleClick事件然后它不会调用 Click事件结束后的第二次MouseDoubleClick .

有一个 recent post其中涉及 SingleClick 的不同行为和 DoubleClick这可能有用。

但是,如果您确定想要单独的行为并且想要/需要阻止第一个 Click以及第二个 Click ,您可以使用 DispatcherTimer就像你一样。

private static DispatcherTimer myClickWaitTimer = 
new DispatcherTimer(
new TimeSpan(0, 0, 0, 1),
DispatcherPriority.Background,
mouseWaitTimer_Tick,
Dispatcher.CurrentDispatcher);

private void Button_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
// Stop the timer from ticking.
myClickWaitTimer.Stop();

Trace.WriteLine("Double Click");
e.Handled = true;
}

private void Button_Click(object sender, RoutedEventArgs e)
{
myClickWaitTimer.Start();
}

private static void mouseWaitTimer_Tick(object sender, EventArgs e)
{
myClickWaitTimer.Stop();

// Handle Single Click Actions
Trace.WriteLine("Single Click");
}

关于WPF:按钮单击+双击问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/971459/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com