【问题标题】:WPF PasswordBox: How do I warn a user that Caps Lock is enabled?WPF PasswordBox:如何警告用户 Caps Lock 已启用?
【发布时间】:2010-09-24 04:29:44
【问题描述】:

有谁知道如何实现标准气泡消息,当 Caps Lock 被启用并且密码控制具有焦点时警告用户?这是内置在 .NET 框架中的,还是我需要编写自己的类来执行此操作?

【问题讨论】:

标签: .net wpf passwordbox


【解决方案1】:

这是一个老问题,已经回答了,但我遇到了同样的问题,我首先从 Keyboard.IsKeyToggled(Key.CapsLock) 开始,但如果在应用程序运行之前设置了 Caps Lock,则返回 false。所以我找到了另一个完美的解决方案。

Console.CapsLock //is boolean and returns true if CapsLock is on

绝对出色且简单(它位于 mscorlib dll 中,因此您也不必担心不需要的依赖项)

【讨论】:

  • 这是错误的解决方案。你必须使用 Keyboard.IsKeyToggled
【解决方案2】:

您可以向PasswordChanged 事件处理程序添加一个处理程序函数并测试该函数中CapsLock 键的值。如果发现已开启,您可以从那里弹出一条消息。

【讨论】:

  • 这样就可以了!要在事件处理程序中检测 CapsLock,只需检查以下布尔值:Keyboard.IsKeyToggled(Key.CapsLock)
  • 这个答案没用:1. PasswordChanged 发生得太晚了。对“GotFocus”做出反应要好得多。 2. 我们如何检查 CapsLock 键的状态?这就是问题所在。
【解决方案3】:

如果您使用 MaskedTextBox 并指定密码字符,.NET 框架会自动为您执行此操作

【讨论】:

  • 我相信 MaskedTextBox 是一个 WinForms 控件 - 我正在使用 WPF。我希望能够继续使用 PasswordBox,因为它具有内置的安全性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-03
  • 1970-01-01
  • 1970-01-01
  • 2011-10-25
  • 1970-01-01
相关资源
最近更新 更多