如何关闭大写锁定键

7

如何关闭WPF窗体中文本框的大写锁定键。

当文本框被聚焦时,我希望关闭大写锁定键。

谢谢。


2
即使在谷歌上搜索“以编程方式关闭C#大写锁定”,第一个答案也是来自Stack Overflow。 - Gustav Klimt
也许这可以帮到你:http://stackoverflow.com/questions/10534664/how-do-i-turn-on-off-the-caps-lock-key - Alex Filipovici
1
@user1811846 请心慈手软,至少可以省去OP自己Google的麻烦 :) https://dev59.com/HVzUa4cB1Zd3GeqP6cZW - Rotem
1
你是想要真正关闭大写锁定键,还是想强制执行小写字符串? - RichK
2个回答

14

很容易,首先添加命名空间

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);
        }
    }

这段代码会关闭大写锁定键.. 我在输入事件中使用了它,你可以根据你的需求添加它!

查看这个链接这里


3

使用此代码适用于WPF表单。

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);
        }

    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接