4

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

编辑:澄清我为什么关心:在这种特殊情况下,我试图为一种图片查看器实现“下一个”和“上一个”按钮。有问题的图片可能有不同的大小,按钮的位置会改变(所以它们总是在图片下方居中)。如果您需要滚动几张图片,用鼠标跟随这些按钮是很烦人的,所以我想保持鼠标位置相对于点击的按钮不变,但前提是它是用鼠标点击的,而不是键盘点击。

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

4

5 回答 5

8
if (InputManager.Current.MostRecentInputDevice is KeyboardDevice)
于 2008-12-09T15:33:31.537 回答
0

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

于 2008-12-07T03:21:37.163 回答
0

你能详细说明你为什么会关心吗?

多年来我自己编写了许多自定义控件,我不记得有一个例子是我关心点击事件是如何触发的。(除了 VB6 之前的控件生命周期故障,它以不同的顺序触发了获得焦点单击丢失焦点,具体取决于您是单击按钮、使用加速键还是按 ENTER 作为默认值)。

于 2008-12-07T03:39:19.730 回答
0

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

我会将 prev/next 放在图片顶部,您可以在其中控制它们的位置。围绕这些按钮跳舞违背了大多数关于 UI 一致性的观点。进一步为鼠标用户和键盘用户创造不同的体验也违背了当前关于良好 UI 设计的大多数智慧。

另一种方法是选择图片可以在 UI 上获得的恒定最大尺寸,如果它超过该比例以适应,否则允许它在一帧内自由更改。如果您绝对必须将它们放在底部,这会使您的按钮保持在同一位置。

于 2008-12-07T18:15:32.897 回答
0

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

于 2008-12-09T15:39:46.563 回答