前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WPF中控件单击双击冲突的解决方案

WPF中控件单击双击冲突的解决方案

作者头像
Shunnet
发布2022-06-09 11:18:23
1.7K0
发布2022-06-09 11:18:23
举报
文章被收录于专栏:一路走一路失去也一路拥有

当你在设置一个按钮要单击又要双击的时候[按正常来说就是两个事件]

事件创建好后,单击控件还正常,就进入单击事件

当双击时,你会发现,它会先去单击事件,随后进入双击事件,就很头痛

【上才艺,花手摇起来】

摇累了,来看看代码吧【一个事件搞定】

代码语言:javascript
复制
/// <summary>
/// 点击数量
/// </summary>
int CkickCount = 0;
/// <summary>
/// 是否是双击
/// </summary>
bool IsDoubleClick = false;
/// <summary>
/// 当鼠标按下
/// </summary>
private void Button_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    ++ChannelCkickCount;
    DispatcherTimer ClickTimer = new DispatcherTimer();
    ClickTimer.Interval = new TimeSpan(0, 0, 0, 0, 200);
    ClickTimer.Tick += (s, e1) =>
    {
        ClickTimer.IsEnabled = false;
        ChannelCkickCount = 0;
        if (!ChannelIsDoubleClick) { ClickCommand(); }
        ChannelIsDoubleClick = false;
    };
    ClickTimer.IsEnabled = true;
    if (ChannelCkickCount % 2 == 0)
    {
        ClickTimer.IsEnabled = false;
        ChannelCkickCount = 0;
        ChannelIsDoubleClick = true;
        DoubleClickCommand();
    }
}

 /// <summary>
/// 单击
/// </summary>
private void ClickCommand()
{

}

/// <summary>
/// 双击
/// </summary>
private void DoubleClickCommand()
{

}

Copy

实现

代码语言:javascript
复制
//正常操作
按钮的对象.PreviewMouseLeftButtonDown +=Button_PreviewMouseLeftButtonDown;
//带参操作【事件方法上也得定义参数哦】
按钮的对象.PreviewMouseLeftButtonDown += delegate (object sender, MouseButtonEventArgs e) {Button_PreviewMouseLeftButtonDown(sender, e, 【这里是传过去的参数】); };

Copy

搞定,点赞收藏加关注哦

“关注[顺网]微信公众号,了解更多更有趣的实时信息”

本文作者:[博主]大顺

本文链接:https://shunnet.top/BJ36bi

版权声明:转载注明出处,谢谢

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档