如何判断WPF中键盘或鼠标是否触发了按钮单击事件?

时间:2008-12-06 23:26:10

标签: wpf events button

除了在Mouse / Key Up / Down事件处理程序中设置多个标志之外,还有一种简单的方法可以告诉触发Button的Click事件吗?我目前只对区分鼠标和其他所有东西感兴趣,但如果可能的话,处理Stylus和其他输入类型会很好。我是否必须创建自己的按钮控件才能实现此目的?

编辑:澄清我关心的原因:在这种特殊情况下,我正在尝试为某种图片查看器实现“下一步”和“上一页”按钮。有问题的图片可能大小不同,按钮的位置也会改变(因此它们总是位于图片下方)。如果你需要滚动几张图片,用鼠标按下这样的按钮是非常讨厌的,所以我想让鼠标位置相对于点击的按钮保持不变,但只有用鼠标而不是键盘点击它。

Edit2:按钮位于顶部还是底部都没关系,因为中心无论如何都可以改变。 “图片浏览器”这里只是一个抽象概念,在这个特殊情况下,对我来说重要的是图片的左上角保留了它的位置,但是详细的问题超出了问题的范围。在这种应用程序中缩放图片并不是那么简单,所以我想知道我要求不进入UI实现讨论的问题的答案。

5 个答案:

答案 0 :(得分:8)

if (InputManager.Current.MostRecentInputDevice is KeyboardDevice)

答案 1 :(得分:0)

您应该专门处理MouseXXX,StylusXXx和KeyboardXXX事件。

答案 2 :(得分:0)

你能说清楚为什么要关心吗?

多年来我自己编写了很多自定义控件,我不记得一个我关心如何触发点击事件的实例。 (除了VB6控制生命周期故障之外,根据您是否单击了按钮,使用加速键或按下ENTER作为默认值,以不同顺序触发了焦点 - 点击 - 丢失焦点。)

答案 3 :(得分:0)

当人们在Windows窗体和网页底部放置按钮时,我个人觉得很烦人。阅读一些关于用户界面的文献,你会发现,如果他们在页面/表格上找不到有趣的东西,大多数人甚至都没有那么远。我希望能够在我知道内容不感兴趣的情况下立即点击下一步,因此请保持导航按钮位于顶部。

我会将prev / next放在图片的顶部,您可以控制它们的位置。跳舞那些按钮与UI一致性的大多数意见相反。进一步为鼠标用户和键盘用户创造不同的体验也与优秀的UI设计上的大多数现有智慧背道而驰。

另一种方法是选择图片可以在UI上获得的常量最大尺寸,如果超过该尺度以适合,则允许其在一帧内自由变化。如果您必须将它们放在底部,这会使您的按钮保持在同一个位置。

答案 4 :(得分:0)

您可以使用不同的设备创建枚举,具有每次鼠标/键盘/等时设置的全局属性。已启动,只需在需要时参考。