- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您可能会发现是否已按下 CapsLock 键订阅 KeyDown/KeyUp 事件。然后根据该输入切换 CapsLock 的状态。这种方法的问题是您需要 CapsLock 键的初始状态才能开始切换它。
这方面的一个应用可能是在登录页面上向用户发出通知(这正是我所需要的)。
顺便说一句,我使用的是 Silverlight 5。
发布的解决方案here说:
You can however find out if Capslock is on by making use of KeyEventArgs.PlatformKeyCode that's actually send at onKeyDown.You can look up the Virtual Key-code for capslock in here: http://msdn.microsoft.com/en-us/library/ms927178.aspx
使用此解决方案,您无法确定 CapsLock 状态,因为 KeyEventArgs.PlatformKeyCode
返回“表示按下或释放的键的整数值(取决于引发的事件)”。因此,如果 CapsLock 开启且按下 Key A,则 KeyEventArgs.PlatformKeyCode = 65
,另一方面,如果 CapsLock 关闭且按下 Key A,则 KeyEventArgs.PlatformKeyCode = 65
>.
换句话说,您无法根据 KeyEventArgs.PlatformKeyCode
属性确定 CapsLock 是否启用。
this 的答案问题似乎也有解决方案,它检查两件事:
这两种情况都意味着 CapsLock 已打开,但此解决方案也存在问题,给定 KeyEventArgs,您可以知道键盘中按下的键,但无法知道该键输出的 Char。
最佳答案
我建议使用 Behavior 进行此检测,因为您可以连接到 PasswordChanged 和 KeyDown 事件以确定 Caps Lock 是否打开。这是我编写的一个快速行为,用于检测 Caps Lock 是否打开。您可以绑定(bind)到 CapsLockOn 行为并使用类似数据状态行为的东西来隐藏/显示您的警告消息。
public class DetectCapsLockBehavior : Behavior<PasswordBox>
{
private int _lastKey;
private ModifierKeys _modifiers;
[Category("Settings")]
public bool CapsLockOn
{
get { return (bool)GetValue(CapsLockOnProperty); }
set { SetValue(CapsLockOnProperty, value); }
}
public static readonly DependencyProperty CapsLockOnProperty = DependencyProperty.Register("CapsLockOn", typeof(bool), typeof(DetectCapsLockBehavior), new PropertyMetadata(null));
protected override void OnAttached()
{
AssociatedObject.PasswordChanged += new RoutedEventHandler(AssociatedObject_PasswordChanged);
AssociatedObject.KeyDown += new KeyEventHandler(AssociatedObject_KeyDown);
}
void AssociatedObject_KeyDown(object sender, KeyEventArgs e)
{
_lastKey = e.PlatformKeyCode;
_modifiers = Keyboard.Modifiers;
}
void AssociatedObject_PasswordChanged(object sender, RoutedEventArgs e)
{
if (_lastKey >= 0x41 && _lastKey <= 0x5a)
{
var lastChar = AssociatedObject.Password.Last();
if (_modifiers != ModifierKeys.Shift)
{
CapsLockOn = char.ToLower(lastChar) != lastChar;
}
else
{
CapsLockOn = char.ToUpper(lastChar) != lastChar;
}
}
}
}
注意:这是示例代码,因此可能存在错误。只是想演示如何做到这一点。
关于c# - 在 Silverlight 中检测 CapsLock 是打开还是关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7474775/
这是我的代码: state := GetKeyState("Capslock", "T") if state = true F1::Run explorer F2::Run notepad F3::R
我有下面的代码可以在应用程序启动时更改 Caps Lock 键的状态。 我想在启动应用程序时将 Caps Lock 状态更改为 ON(如果它已经处于 ON 状态,则应保持 ON 状态)。当应用程序关闭
我有一个 DataGridTemplateColumn,其中 DataTemplate 作为 PasswordBox。 如果 CapsLock 被切换,我想警告用户。 private void Pas
我正在尝试编写一些东西,在输入用户名/密码之前通过错误提供程序通知用户大写锁定已打开。我发现了一些看起来像这样的代码: private void nameInputTextBox_TextChange
我想知道我是否可以使用下面的相同代码并进行一些小的更改以添加我需要的功能。写法: ::::Set WshShell = CreateObject("WScript.Shell") ::::WshShe
我想知道我是否可以使用下面的相同代码并进行一些小的更改以添加我需要的功能。写法: ::::Set WshShell = CreateObject("WScript.Shell") ::::WshShe
我只是想知道是否可以在某个 input 字段上将输入自动更改为 capitalized,用户在该字段中输入了一个大写锁定的值。 上限 = 测试名称 预期:测试名称 Caps Off = 测试名
我有一个用 C++ 编写并在 Windows 上运行的程序。我允许用户绑定(bind) CAPSLOCK 键,所以如果他们每次按下它时,他们不会同时切换他们的 CAPSLOCK 状态,那就太好了。 我
在 src$Review 中,每一行都用俄语填充。我想计算每行中的 CAPSLOCK。例如,在“我的苹果是绿色的”中,我不仅要计算大写字母的数量,还要计算 CAPSLOCK 的数量(没有“My”,只有
CapsLock 似乎是重新映射的两个最棘手的键之一(另一个是电源按钮)。 我可以全局拦截 NSEvent-s: _eventTap = CGEventTapCreate( kCGHIDEve
我刚刚发现大写锁定和 Shift 键(可能还有其他一些键)会影响连接到计算机的所有键盘。 (测试我编写的程序的危险之一,我只有两只手,所以我花了很长时间才意识到这样的问题)因此,将击键分开很好,但是
我想使用 Java 确定 CapsLock 的当前状态。到目前为止我已经尝试过以下操作。 Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent
我以下用于检查 Capslock 是否打开的代码在“onkeypress”事件上工作正常。 但我想要它用于“onfocus”事件。 我尝试将控件的“onkeypress”替换为“onfocus”,但它
我正在开发一个使用伟大的 MASShortcut repository 的应用程序什帕科夫斯基。我引用这个是为了询问是否有一种方法可以像 Shpakovski 在他的存储库中那样注册 Capslock
德尔福 2010 企业版 如何在显示虚拟键盘时自动打开 CapsLock。 最佳答案 在 FormCreate 上尝试一下: procedure TForm1.FormCreate(Sender: T
基本上我有这个问题:CapsLock password message in TEdit visually fails with VCL Styles . 我想做的不是解决答案或评论中所示的问题。 我
(Mac)是否可以重新映射大写锁定以执行除操作系统预期用途以外的任何其他操作?我曾尝试在Karabiner和“系统偏好设置”>“键盘”>“修改键”中使用它,但是没有运气。这并不是使它成为修饰键,而只是
您可能会发现是否已按下 CapsLock 键订阅 KeyDown/KeyUp 事件。然后根据该输入切换 CapsLock 的状态。这种方法的问题是您需要 CapsLock 键的初始状态才能开始切换它。
我正在尝试构建一个包含多项检查的输入表单。其中之一是检查 CapsLock 是否处于 Activity 状态。如果我尝试将此功能与 Java Swing 一起构建,它会起作用,请参见下面的代码。但在
我创建了一个函数来防止用户在字段中输入除数字之外的任何内容(但允许使用“退格”、“输入”等有用的键...) 这里是一个 jsFiddle 的例子:http://jsfiddle.net/cWHRp/1
我是一名优秀的程序员,十分优秀!