c# - 如何防止 WPF 按钮在单击后保持突出显示状态?

标签 c# .net wpf button focus

单击标准 WPF 按钮时,它会以蓝色突出显示(可能使用任何 Windows 主题设置的蓝色),并且在您与任何其他控件交互之前它会一直突出显示。对于我的应用程序,它会让用户感到困惑。

是否有一种简单的方法可以关闭此功能并将按钮恢复为正常样式? 我正在使用 .NET 4。

最佳答案

发生的事情是按钮在被点击后接受输入焦点,就像您点击它时任何其他控件所做的一样。

Windows 指示控件具有输入焦点(至少在 Aero 主题下)的方式是使用微妙的蓝色突出显示。

特别是对于按钮控件,当它具有输入焦点时,只需按 Enter 键即可“按下”该按钮。这就是为什么保持突出显示非常重要,这样用户才能知道会发生什么。

更好的解决方案是在用户单击按钮后立即将焦点设置到窗口中的不同控件。这样,它将不再自动突出显示,并且当用户按下 Enter 键时不会自动触发任何操作。 (这是您试图解决的真实可用性问题,即使您还不知道。没有什么比在用户实际尝试键入时无意中点击按钮更令人困惑的了一些东西。)

可以通过设置按钮的 Focusable property 来阻止按钮完全获得焦点。为假,但我强烈建议不要这样做。完成此操作后,用户将无法仅使用键盘“按下”按钮。设计良好的应用程序应该始终可供不喜欢或不能使用鼠标的用户访问。

关于c# - 如何防止 WPF 按钮在单击后保持突出显示状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5950309/

相关文章:

c# - 如何根据图像的高度计算图像的比例宽度?

c# - 如何 async-await "save threads"?

c# - Puppeteer 启动后软件卡住

c# - 在 xaml 中使用自定义 RoutedUICommand 会引发异常

c# - PostBack 后 ASP.NET TextBox 值未保留 - session 值正常

C++继承的C#接口(interface)

c# - 使用 C# 在 uTorrent 中打开 torrent 文件

wpf - 捕获在 Powershell 中运行的 XAML 文本框中的 Enter 键

C# is operator with nullable types always false 根据 ReSharper

c# - 合并2个配置文件