当前位置:编程学习 > C#/ASP.NET >>

textbox限制输入字符数

怎样限制textbox的输入,当输入到最后一行一列时,禁止textbox自动向下滚动 textbox --------------------编程问答-------------------- texbox.MaxLengh = 5 --------------------编程问答-------------------- 关键是Maxlength怎么算出来啊?? --------------------编程问答-------------------- 系统底层实现的吧 --------------------编程问答-------------------- 我想限制textbox输入的字符数,当输入到最后一行一列时就禁止用户输入,除非退格,怎么实现啊??急求 --------------------编程问答-------------------- 判断行数与长度大于你所设定的就警告或者输入后重新赋值为截取后的有效字符串 --------------------编程问答--------------------
引用 楼主 sunbing201213 的回复:
怎样限制textbox的输入,当输入到最后一行一列时,禁止textbox自动向下滚动
              
                  textbox

你先告诉我何时是最后一行一列?? --------------------编程问答--------------------        测试通过 
        int maxline = 3;
        int maxLen = 10;
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            bool reSet = false;
            string[] strs = textBox1.Lines;
            try
            {
                int line = strs.Length;
                if (line > maxline)
                {
                    reSet = true;
                    Array.Resize<string>(ref strs, line - 1);
                    --line;
                }
                for (int i = 0; i < line; i++)
                {                    
                    if (strs[i].Length > maxLen)
                    {
                        reSet = true;
                        strs[i]= strs[i].Substring(0, maxLen);
                    }
                }
                if(reSet)
                {
                    string result = "";
                    for (int i = 0; i < line; i++)
                    {
                        result += strs[i]+((i<line-1)?"\r\n":"");
                    }
                    textBox1.Clear();
                    textBox1.AppendText(result);
                }
            }
            catch (System.Exception)
            {
            }
        } --------------------编程问答--------------------
引用 6 楼 Chinajiyong 的回复:
引用 楼主 sunbing201213 的回复:怎样限制textbox的输入,当输入到最后一行一列时,禁止textbox自动向下滚动
              
                  textbox
你先告诉我何时是最后一行一列??

就是不用滚动条滚动,可视的初始状态最后一行一列 --------------------编程问答--------------------
引用 7 楼 wangdayong228 的回复:
测试通过 
        int maxline = 3;
        int maxLen = 10;
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            bool reSet = false;
      ……
maxline,maxLen怎么算出来啊??只知道textBox控件的size啊。。
--------------------编程问答-------------------- 一般的,像类似的能输入的控件,都是有属性可设置的,这样的问题,楼主可慢慢探索... --------------------编程问答-------------------- 这样才进步.. --------------------编程问答--------------------
引用 11 楼 king769147 的回复:
这样才进步..
找遍了属性,和百度,msdn都没有 --------------------编程问答-------------------- 字体不是等宽字体,怎么样根据textbox宽度算出每行的最大字符数??[img=http://][/img]
当输入到红箭头所示位置,即屏蔽用户输入,除非退格否则不能继续输入,知道textbox的size,怎么做呢
,试过好多种办法了就是不行啊,急救呢 --------------------编程问答--------------------
引用 13 楼 sunbing201213 的回复:
字体不是等宽字体,怎么样根据textbox宽度算出每行的最大字符数?? --------------------编程问答--------------------
引用 13 楼 sunbing201213 的回复:
字体不是等宽字体,怎么样根据textbox宽度算出每行的最大字符数??[img=http://][/img]
当输入到红箭头所示位置,即屏蔽用户输入,除非退格否则不能继续输入,知道textbox的size,怎么做呢
,试过好多种办法了就是不行啊,急救呢


在textchanged方法中,使用GetTextExtent()方法,你这个问题就解决了。 --------------------编程问答-------------------- 抱歉,是textchanged事件 --------------------编程问答--------------------
引用 16 楼 nonary 的回复:
抱歉,是textchanged事件

关键是用户在richtextBox里的输入可能每行的字符都不一样啊,每行的宽度也不一样,貌似通过计算每行字符数限制输入不行,怎么办呢?? --------------------编程问答-------------------- 中文跟英文字符有区别吗? --------------------编程问答-------------------- 根据TextBox大小和字体大小(Font.GetHeight)可算出可显示的行数 --------------------编程问答--------------------
引用 19 楼 owennol 的回复:
根据TextBox大小和字体大小(Font.GetHeight)可算出可显示的行数

 private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
        {
            int thei = textBox2.Height;
            int hei = textBox2.Font.Height;
        
            int row = textBox2.GetLineFromCharIndex(textBox2.Text.Length+1);
            if (e.KeyChar=='\r')
            {
                if (textBox2.Lines.Length + 1 > thei/hei || row > thei/hei)
                    e.Handled = true;
                return;
            }

            if (row > thei / hei)
                e.Handled = true;
            
            
            if (e.KeyChar == '\b')
                e.Handled = false;
               
        }

--------------------编程问答--------------------
引用 20 楼 sunbing201213 的回复:
引用 19 楼 owennol 的回复:根据TextBox大小和字体大小(Font.GetHeight)可算出可显示的行数
 private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
        {
            int thei = textBox2.Height;
   ……

还是不行呢,多一行b --------------------编程问答--------------------
引用 17 楼 sunbing201213 的回复:
引用 16 楼 nonary 的回复:抱歉,是textchanged事件
关键是用户在richtextBox里的输入可能每行的字符都不一样啊,每行的宽度也不一样,貌似通过计算每行字符数限制输入不行,怎么办呢??
不说了么,你获取的是宽度,就是长度单位,不是字符个数单位。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,