6

テキスト ボックスの Caps Lock キーをオフにするにはどうすればよいですか。私はWPFフォームを使用しています。

テキストボックスがフォーカスされているとき、Caps Lock をオフにしたい。

ありがとう

4

2 に答える 2

12

その簡単な、まず名前空間を追加します

using System.Runtime.InteropServices;

次に、これをクラスで宣言します

[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags,
UIntPtr dwExtraInfo);

最後に、textBox_Enter イベントでこのコードを追加します

private void textBox1_Enter(object sender, EventArgs e)
    {
        if (Control.IsKeyLocked(Keys.CapsLock)) // Checks Capslock is on
        {
            const int KEYEVENTF_EXTENDEDKEY = 0x1;
            const int KEYEVENTF_KEYUP = 0x2;
            keybd_event(0x14, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr)0);
            keybd_event(0x14, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
            (UIntPtr)0);
        }
    }

このコードは Capslock をオフにします.. 入力イベントで使用しましたが、必要に応じて追加できます。

こちらのリンクをご覧ください

于 2012-11-29T10:36:28.220 に答える
2

このコードを WPF の from に使用します。

private void txt_KeyDown(object sender, KeyEventArgs e)
    {

        if (Keyboard.GetKeyStates(Key.CapsLock) == KeyStates.Toggled) // Checks Capslock is on
        {
            const int KEYEVENTF_EXTENDEDKEY = 0x1;
            const int KEYEVENTF_KEYUP = 0x2;
            keybd_event(0x14, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr)0);
            keybd_event(0x14, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
            (UIntPtr)0);
        }

    }
于 2013-04-22T10:08:10.733 に答える