我有一个带有一些编辑框的Winform。
表格也可以用其他语言加载,就像中文一样! 要求是某些文本框只能接受英文字符 示例当用户在Tex框1中键入时,它应该是英文 如果他输入文本框2和3,它应该是中文?
是否可以做这样的事情!
答案 0 :(得分:4)
是的,这当然是可能的。您可以添加检查字符的验证事件处理程序。您可以拥有允许字符的字典,或者如果将字符限制为特定编码(可能是UTF-8),则可以使用<
和>
将字符与一系列字符进行比较。< / p>
更具体一点:您可以处理KeyPress
事件。如果e.KeyChar
无效,请将e.Handled
设置为true
。
试试这个:
private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (System.Text.Encoding.UTF8.GetByteCount(new char[] { e.KeyChar }) > 1)
{
e.Handled = true;
}
}
答案 1 :(得分:0)
对于句柄复制和粘贴,请尝试以下操作。它可能不是最好的解决方案,但它会削减非UTF8字符。
private void Control_KeyDown(object sender, KeyEventArgs e)
{
//Prevent the user from copying text that contains non UTF-8 Characters
if (!e.Control || e.KeyCode != Keys.V)
return;
if (Clipboard.ContainsText() &&
Clipboard.GetText().Any(c => System.Text.Encoding.UTF8.GetByteCount(new[] {c}) > 1))
{
char[] nonUtf8Characters =
Clipboard.GetText().Where(c => System.Text.Encoding.UTF8.GetByteCount(new[] {c}) <= 1).ToArray();
if (nonUtf8Characters.Length > 0)
{
Clipboard.SetText(new String(nonUtf8Characters));
}
else
{
Clipboard.Clear();
}
e.Handled = true;
}
}