我们提供安全,免费的手游软件下载!

安卓手机游戏下载_安卓手机软件下载_安卓手机应用免费下载-先锋下载

当前位置: 主页 > 软件教程 > 软件教程

实现WPF中的长按按钮事件

来源:网络 更新时间:2024-07-08 09:30:35

最新内容优先发布于个人博客:小虎技术分享站,随后逐步搬运到博客园。

实现了一个支持长短按得按钮组件,单击可以触发 Click 事件,长按可以触发 LongPressed 事件,长按松开时触发 LongClick 事件。源码请自取: Github

长按阈值属性的建立

为了方便在 xaml 中使用,我们先配置一个 DependencyProperty 叫做 LongPressTime 来作为界定长按的阈值

定义完成后可以在Xaml设计器中使用 LongPressTime 这个拓展属性

长按的定时器判定方法

C#中的4种定时器,在WPF中需要使用 Dispater Timer

定义一个DispatcherTimer来监控是否按下达到了长按

实现长按事件的定义

现在作为一个自定义控件,我们需要在长按后发出一个 RoutedEvent ,并修改部分之前的代码抛出事件

回到窗体的代码中,添加事件的响应

C#代码如下,长按按钮会显示Long Pressed,单击会是Click

发现 Click LongPress 都可以响应,但是当松开按钮时又变成了 Click ,原因是鼠标松开时响应了默认的Click事件

现在对按钮控件默认的 OnClick 函数稍作修改,可以让 Click 也不出问题

之后再进行点击操作,我们就可以看到符合预期的结果

长按+Style按钮的展示效果
外观Style自定义见这篇文章:WPF自定义按钮外形

参考链接

UIElement.MouseLeftButtonDown Event
用户控件自定义 DependencyProperty 属性使用教程
WPF 中 DispatcherTimer 计时器
如何:创建自定义路由事件
WPF 自定义带自定义参数路由事件
Use WPF Style in another assemble