0

仮想コードを受信して​​小文字/大文字を処理するメソッドを作成していました (仮想コードは常にコードを返し、大文字または小文字を単独でレンダリングすることはできません)。誰かが興味を持っている場合は、Control.IsKeyLockedControl.ModifierKeysクラスを使用して解決策を見つけました。

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

私が実装しようとしていた最初の解決策は、Control.IsKeyLocked() を使用してシフト キーを処理することでした。IsKeyLocked は、実際に numlock、capslock などのようにロックできるキーに対してのみ使用する必要があることがわかりました。次のコード動作しませんでした:

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

さて、Caps Lockがオン/オフであるかどうか、およびControl.IsKeyLockedとControl.ModifierKeysをifステートメントと組み合わせて実際にシフトが押されているかどうかを処理することで、問題の解決策を実際に見つけました(caps lockがオン/シフトのときに小文字を処理するため)が押され、Caps Lock がオフの場合は大文字、Shift が押された場合は大文字、またはその逆)。上記のコードが機能せず、実際にはその下のコードでさえ実行されなかった理由に興味があります。コンパイラがエラーをスローしなかったのはなぜですか?. これにより、シフトキーがロックされるのを待っている「待機中」の状態でアプリケーションが何らかの形でスローされると思いますが、これは起こり得ません。

4

0 に答える 0