繁体   English   中英

仅限英语字符

[英]Restrict to only English chars

我有一个带有一些编辑框的Winform。

表格也可以用其他语言加载,比如中文! 要求是某些文本框只能接受英文字符示例当用户在Tex框1中键入时,它应该是英文的,如果他在文本框2和3中键入它应该是中文?

有可能做这样的事情!

是的,这当然是可能的。 您可以添加检查字符的验证事件处理程序。 您可以拥有允许字符的字典,或者如果将字符限制为特定编码(可能是UTF-8),则可以使用<>将字符与一系列字符进行比较。

更具体一点:您可以处理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;
    }
}

对于句柄复制和粘贴,请尝试以下操作。 它可能不是最好的解决方案,但它会削减非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;
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM