WPF加速键如Visual Studio

3
我正在使用C#和WPF开发一款大型业务应用程序。我们的标准是在所有表单中为按钮包括加速键(保存,取消,搜索等)。我最近注意到,当加载表单时,即使用户没有按下“Alt”键,加速键也是活动的。例如,我们的搜索按钮使用“Alt-H”作为加速器,但用户只需按下“H”即可启动搜索。我使用标准的“_”在按钮内容中创建加速键。
<Button Content="Searc_h"/>

是否有其他人注意到这种行为,并找到需要按下“Alt”键的适当解决方法?

5个回答

11

这是在Windows上加速键的标准行为,只有当没有文字输入聚焦时才会生效。请不要更改它,让它保持原样。

你可以自行验证。按Win+R打开“运行”对话框,然后按Tab键,使其中一个按钮聚焦,然后按下“B”键。此时,“浏览”按钮将被激活。

这也是为什么您可以用简单的Y/N来回答那些MessageBox提示,而不需要使用Alt+Y / Alt+N的原因。


7
当我作为用户时,绝对、肯定、完全令人沮丧的事情是,在任何一个程序中都能正常工作的标准功能,因为程序员试图做些聪明的事情,甚至更糟糕地,故意破坏它,结果在某些随机的程序中突然失效。 - Timwi
+1;永远不要制作违反操作系统默认行为的应用程序。 - Mizipzor

4
不要加下划线,然后将此添加到窗口中。
  <Window.InputBindings>
    <KeyBinding Command="Help" Key="H" Modifiers="Alt"/>
  </Window.InputBindings>

8
虽然这样做可以实现原帖的要求,但是请你务必不要故意破坏标准功能。所有加速键都一直以这种方式工作。 - Roman Starkov
3
+1是因为他是唯一一个回答OP问题的人。也许OP没有选择的余地?有时候,你必须做自己不想做的事情,因为你的管理层要求你这样做,而且如果你不这样做,这就是你的工作。 - Vaccano

2

1

这篇关于Sara Ford的博客的文章讨论了这个现象。

一位评论者提到了以下解决方案:

“如果你正在编写一个应用程序,而且你不喜欢这种行为,可以查找WM_CHANGEUISTATE和特别是UISF_HIDEFOCUS标志。”


-1

哈哈,今天早上对我有效。不知道他们的网站是否存在稳定性问题... - Doug
2
这就是为什么你不应该发布依赖于链接的答案。在你的帖子中重申实际的答案即可。 - Timwi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接