C#Winforms键。右键显示等于单引号?
我试图阻止用户在按键事件中键入单引号。看起来很简单。我要做的就是使用KeyChar。当我转换为char并与Keys.Right(右箭头)进行比较时,出于某种奇怪的原因,单个引号是匹配的。我对此感到困惑。你知道为什么一个单引号可以匹配一个右箭头吗?我所看到的所有示例都只进行相同的转换,以与键进行比较C#Winforms键。右键显示等于单引号?,c#,winforms,C#,Winforms,我试图阻止用户在按键事件中键入单引号。看起来很简单。我要做的就是使用KeyChar。当我转换为char并与Keys.Right(右箭头)进行比较时,出于某种奇怪的原因,单个引号是匹配的。我对此感到困惑。你知道为什么一个单引号可以匹配一个右箭头吗?我所看到的所有示例都只进行相同的转换,以与键进行比较 Func<char, bool> IsEditingKey = k => { if (k == (char)Keys.Left
Func<char, bool> IsEditingKey = k =>
{
if (k == (char)Keys.Left || k == (char)Keys.Right || k == (char)Keys.Delete || k == (char)Keys.Back)
{
return true;
}
return false;
};
Func IsEditingKey=k=>
{
如果(k==(char)Keys.Left | | k==(char)Keys.Right | | k==(char)Keys.Delete | | k==(char)Keys.Back)
{
返回true;
}
返回false;
};
如果我传入一个引号('),当k==(char)Keys.Right的测试发生时,它返回true。现在我想这可能是一个cast问题,但我如何进行比较以确保它确实是正确的箭头而不是单引号(')?使用此选项将
键转换为字符:
KeysConverter kc = new KeysConverter();
char c = Convert.ToChar(kc.ConvertToString(Keys.Left))));
使用此选项可将键
转换为字符
:
KeysConverter kc = new KeysConverter();
char c = Convert.ToChar(kc.ConvertToString(Keys.Left))));
请尝试KeyDown事件,而不是KeyPress事件。它使用KeyEventArgs,这是您正在寻找的
textBox1.KeyDown += new KeyEventHandler(textBox1_KeyDown);
void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Right)
{
//Do Something
}
}
请尝试KeyDown事件,而不是KeyPress事件。它使用KeyEventArgs,这是您正在寻找的
textBox1.KeyDown += new KeyEventHandler(textBox1_KeyDown);
void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Right)
{
//Do Something
}
}
您正在将字符与虚拟键混合。不一样。右键的值为0x27<代码>'\'
也是0x27。一个是枚举,另一个是char
您需要使用适当的事件来区分这两者。KeyDown事件为您提供虚拟密钥。KeyPress事件为您提供键入字符,该字符是在用户首选键盘布局转换虚拟键后生成的。由于您只对角色感兴趣,而对虚拟键不感兴趣,因此必须使用KeyPress。设置e.Handled=true以抑制它。您将字符与虚拟键混淆。不一样。右键的值为0x27<代码>'\'
也是0x27。一个是枚举,另一个是char
您需要使用适当的事件来区分这两者。KeyDown事件为您提供虚拟密钥。KeyPress事件为您提供键入字符,该字符是在用户首选键盘布局转换虚拟键后生成的。由于您只对角色感兴趣,而对虚拟键不感兴趣,因此必须使用KeyPress。设置e.Handled=true以抑制它。谢谢!是的,我最初尝试了keydown,但我使用的基础设施控件存在一些bug,e.handled=true无法抑制它。由于某种原因,当我在按键事件上执行此操作时,它会工作。这是因为e.HandleforKeyDown不会抑制按键。e.SuppressKeyPress属性有。谢谢!是的,我最初尝试了keydown,但我使用的基础设施控件存在一些bug,e.handled=true无法抑制它。由于某种原因,当我在按键事件上执行此操作时,它会工作。这是因为e.HandleforKeyDown不会抑制按键。e.SuppressKeyPress属性没有。我使用的infragstics控件有一个错误,这就是我没有使用KeyDown的原因。出于某种原因,在按键中将Handle设置为true会抑制它,但在keydown中不会抑制它(这应该可以工作,但不会)。我使用的infragstics控件存在一个错误,这就是我没有使用keydown的原因。由于某些原因,在按键中将handled设置为true会抑制它,但在keydown中不会抑制它(这应该可以工作,但不会)。谢谢!我要试试看。:)KeyConverter仅适用于在快捷键敲击的菜单中生成帮助字符串。谢谢!我要试试看。:)KeyConverter仅适用于在快捷键敲击的菜单中生成帮助字符串。