我想请教一下C#高手门,我的问题是这样的,我想在一个textBox中输入一连串的文本,在我输入的过程中实现输入5个字符就自动加一个空格,比如,我在键盘上按下236521235,在textbox中显示2365  2123  5,怎么实现,还有,就是我要输错了,想把光标往前移动一下,删了一个字符,后面的字符仍然按原来的规律排列,还是上面的一串,比如我把光标移到2365后,再插入一个0,刚变为2365  0212  35,怎么实现,要求没有明显的闪屏,我以前用的方法是把内容取出来再写一次,但字符一多,处理速度慢得要命,想求一个最优方法,不写代码写写思想也行,先谢谢了。

解决方案 »

  1.   

    是4个一组,写错了,呵呵。希望大宏能想个好的算法…在任意位置插入删除,后面的字符都会自动分组排好,如果觉得textbox控件不合适,换一个也行,反正就输入字符就可以。
      

  2.   


    //在textBox的textchanged事件中:
    string str="1232133423242";
    str=string.Join(" ",Regex.Split(str,"(?<=\\G\\d{4})"));
    Console.WriteLine(str);  //1232 1334 2324 2
      

  3.   

    那样不是输出到控制台了么?我想让他继续在textbox中显示,能行吗?我不太懂,刚学C#。
      

  4.   

    在一个textbox输入的过程中无法实现这种效果吧?
      

  5.   

    如果在textbox中无法实现那在什么中实现比较好呢?
      

  6.   

    private void textBox1_TextChanged(object sender, EventArgs e)
            {
                if (textBox1.Text.Length == 4)
                {
                    textBox1.AppendText(" ");
                    
                }
                if ((textBox1.Text.Length)==9)
                {
                    textBox1.AppendText(" ");
                    
                }
                
            }接下来自己想把发控制那个数字就行了,
      

  7.   

    KeyPress事件中判断按键规则...如果是键盘上的特殊键..过滤...其余的...记录文本框光标所在索引...如果在末尾则判断textBox1.TextLength%5是否等于4...如果是...则textBox1.AppendText(" "+键盘输入)
    如果光标在文本中间的则记录光标所在位置索引sidx..sidx%5得到光标在该分段的索引tidx
    然后(textBox1.TextLength-sidx+tidx)/5就能得到从光标所在位置到文本末尾的分段数,
    按分段数循环删除空格所在并且在空格所在索引向前移动一个单位添加一个空格..,
    没有测试过..不晓得能不能符合你的需求...如果此逻辑有错误..也请指出...
      

  8.   

    KeyPress事件末尾需要添加e.Handled = true;
      

  9.   


                this.textBox1.KeyUp += (sender, e) =>
                {
                    this.textBox1.Text = System.Text.RegularExpressions.Regex.Replace(this.textBox1.Text.Replace(" ", ""), @"[^\s]{4}", "$0 ");
                    this.textBox1.SelectionStart = this.textBox1.Text.Length;
                };写在你的Form的构造函数或Form_load事件里
      

  10.   

    如果在textbox中无法实现那在什么中实现比较好呢?
      

  11.   

    textbox.text=str;这样就可以在textbox里显示了,注:textbox是aspNet:TextBox中的ID