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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);
            
        


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

参考技术A 设置maxlength为20 参考技术B 在控件属性中的MaxLength属性中输入20就好了追问

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

追答

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

Name:

Email:

C#:隐藏与显示textbox的滚动条

能不能隐藏textbox的滚动条,当文字足够多时才显示滚动条

textbox一般情况下的滚动条设置都是None啊,
textBox1.ScrollBars = ScrollBars.Horizontal;
你这里可以参考这个属性的几个值,默认提供的只有4中
None,both(成对有或者没有)
Horizontal(只显示横滚动条)
Vertical(只显示综滚动条)
如果这个不能实现你想要的功能,你可以先设置为None
在textchanged事件中判断text.length,如果超过了你想要的字数再动态设置这个属性为想要的属性。
不知道能不能令你满意
参考技术A 能啊 把那个什么属性 (忘了什么名了)设置成自动就行了

以上是关于c#如何使Textbox只可以输入10个中文或者只可以输入20个英文、数字(画面有很多textbox控件的​)的主要内容,如果未能解决你的问题,请参考以下文章

c# 的WinForm 中 textbox内如何限制只输入为0-100之间的数字?

C#的textbox怎么没有显示水平滚动条?

c#里面使textbox里面只能输入数字,或者小数点的代码

C# textbox只允许小数点后输入两位怎么实现?

visual C#中如何设置textbox只显示一条下划线,并且背景透明?

C#文本框TextBox使用问题