0

我正在编写一个方法,它应该通过接收虚拟代码来处理小写/大写字母(正如您所知,虚拟代码总是返回一个代码并且不能自己呈现大写或小写字母)。如果有人感兴趣,我通过使用Control.IsKeyLockedandControl.ModifierKeys类找到了解决方案:

bool isCapsLockOn = Control.IsKeyLocked(Keys.CapsLock);
bool isShiftOn = Control.ModifierKeys == Keys.Shift;

我尝试实施的第一个解决方案是使用 Control.IsKeyLocked() 处理 shift 键,不久后我发现 IsKeyLocked 应该仅用于实际上可以锁定的键,如 numlock、capslock 等。以下代码不工作:

bool isLShiftOn = Control.IsKeyLocked(Keys.LShiftKey);
bool isRShiftOn = Control.IsKeyLocked(Keys.RShiftKey);

好的,我实际上通过处理大写锁定是否打开/关闭以及是否使用 Control.IsKeyLocked 和 Control.ModifierKeys 结合 if 语句(在大写锁定打开/移位时处理小写)来实际按下移位来解决我的问题当大写锁定关闭/按下移位等时,按下和大写,反之亦然)。我现在很好奇为什么上面的代码不起作用,实际上甚至下面的代码也没有执行。为什么编译器没有抛出错误?我想这会以某种方式使应用程序处于“等待”状态,等待 shift 键被锁定,这是不可能发生的。

4

0 回答 0