c#如何使Textbox只可以输入10个中文或者只可以输入20个英文、数字(画面有很多textbox控件的​)

如题所述

有个MaxLength属性的话恐怕不能达到要求,只能是手动处理了。

20个英文的话,长度是20(也可中英混杂),代码如下:

private void Form1_Load(object sender, EventArgs e)
        {
            SetTextBoxMaxLength();
        }
void SetTextBoxMaxLength()
        {
            var cons = GetAllControls(this, typeof(TextBox));
            cons.ForEach(con => {
                con.TextChanged += new EventHandler(con_TextChanged);
            });
        }
        void con_TextChanged(object sender, EventArgs e)
        {
            var txt = sender as TextBox;
            int curLength = Encoding.Default.GetByteCount(txt.Text);
            if (curLength > 6) 
                txt.BackColor = Color.Red;
            else
                txt.BackColor = Color.FromName("Window");
        }
        public static List<Control> GetAllControls(Control control, Type type)
        {
            List<Control> cons = new List<Control>();
            foreach (Control c in control.Controls)
            {
                FindAllControls(c, ref cons, type);
                if (c.GetType() == type) cons.Add(c);
            }
            return cons;
        }
        public static void FindAllControls(Control curCon, ref List<Control> cons, Type type)
        {
            foreach (Control c in curCon.Controls)
            {
                FindAllControls(c, ref cons, type);
                if (c.GetType() == type) cons.Add(c);
            }
        }


具体的看需要修改关键代码就行了。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-12-12
设置maxlength为20
第2个回答  2013-12-12
在控件属性中的MaxLength属性中输入20就好了追问

没用啊,好像因为不是用字节来判断,所以输入中文或英文的位数都一样的,本来中文一个字是2个字节的,可是现在好像没区别的

追答

下面这个 HTML 表单带有最大长度分别是 85 和 55 个字符的两个输入字段:

Name:

Email:

相似回答