好吧,你可能想知道为什么无论如何总是启用大写锁定的使用。好吧,对于初学者,我有一个条形码扫描系统,扫描字母数字条形码,包括小写字母和大写字母等。当条形码扫描时,输入捕获字符并验证条形码和其他东西。这引起了我很多问题,因为有些用户因为x,y原因而大写锁定,当然,当他们扫描项目时,所有角色都变得大写,并且没有任何作用。
我的问题是,有没有办法能够“禁用”(可能是错误的选择)大写锁定或者如果它打开则可能将其关闭。基本上,如果一旦发生TextChanged
事件就检测到它,那将是理想的,以确保它始终关闭。
private void barcodeVal_TextChanged(object sender, EventArgs e)
{
//check if caps lock is on. if it is, turn off and evaluate barcode
}
它是否需要发生。
答案 0 :(得分:5)
您可以使用Control.IsKeyLocked
方法进行检查。
它最终看起来像这样:
if (Control.IsKeyLocked(Keys.CapsLock)) {
// Caps lock key is on
}
else {
// The Caps Lock key is OFF
}
我不赞成我会推荐它,但here's an article描述了如何关闭Caps Lock键。好像你可能也在寻找它。
答案 1 :(得分:1)
在搜索时,从this page页面获取的代码似乎有效:
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
public class CapsLockControl
{
[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags,UIntPtr dwExtraInfo);
const int KEYEVENTF_EXTENDEDKEY = 0x1;
const int KEYEVENTF_KEYUP = 0x2;
public static void Main()
{
if (Control.IsKeyLocked(Keys.CapsLock))
{
Console.WriteLine("Caps Lock key is ON. We'll turn it off");
keybd_event(0x14, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr) 0);
keybd_event(0x14, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
(UIntPtr) 0);
}
else
{
Console.WriteLine("Caps Lock key is OFF");
}
}
}
您是否可以简单地将条形码字符串强制设置为上部或下部,并将它们与数据库中类似的上部或下部字符串进行比较?