本人使用的是vs.net2003,今想在一个textBox控件中实现格式化输入,在此向大家请教。
如2s-5-d5s8 (其中"-"在用户输入前就在,当用户输入完前规定字符长度,就会自动跳到下一个"-"后。)   
就如同输入IP地址的效果一样。
希望大家请多指教,不胜感激!!!

解决方案 »

  1.   

    用JS检查,比如 t1,t2,t3,t4四个输入地方
    当键盘被按下或者弹起的时候检查t1是否输入足够字符
    如果是把焦点移动到t2,依次类推
      

  2.   

    "-"应怎么叫他显示在textBox中那!
      

  3.   

    只能在valuechanged事件里想办法
      

  4.   

    winform的话有掩码控件
    webform的话不如用多个TextBox
      

  5.   

    建议采用楼上的方法
    毕竟采用JS带来的效果不是很理想,用户体验很差,而且代码量不小
    而采用多个Textbox,只需要针对于每个Textbox进行长度判断,若够位数则自动Tab一下即可
      

  6.   

    可以用三个文本框来做吧。
    也可以在Value_changed事件里来做。
      

  7.   

    我想在一个textBox中实现。不知能不能行。
      

  8.   

    实现是肯定可以的,只是采用一个Textbox较麻烦啊
    得使用JS控制,用户体验也不是很好
      

  9.   

    或者采用HTC自定义控件,有些得不偿失的感觉
      

  10.   

    楼主为何非得用一个textbox呢?多用几个更易实现。如果为了外观,那么使用CSS可以很容易的模拟出一个textbox,在一个TD里包含几个TEXTBOX来实现。
    如果非得只用一个TEXTBOX也可以,最好是在用户输入指定数量字符后,自动为其添加“-”字符,用正则表达式来验证-_-|||
      

  11.   

    http://community.csdn.net/Expert/topic/4684/4684817.xml?temp=.4897425lz,上边的帖子也是你发的吧,感觉大家给的解决方案不满意,就重新发了。哈。。感觉你听执著的。一个 textBox 无法实现,除非你有方法使得: 重新使得 textBox 获得焦点的同时,光标 处于 textBox 内字符串的末尾。
      

  12.   

    这样行不行,开始时在TextBox里没有"-",用户每输入完一个字符检测是否达到规定字符数,够了就自动在后面加一个"-",然后再检测,从前一个"-"起够规定字符数再自动加一个"-".
      

  13.   

    恭喜搂主,此题有解 了。private void textBox1_TextChanged(object sender, System.EventArgs e)//当文本框中内容改变时激发此事件
    {
    if(this.textBox1.Text.Trim().Length==2)
    {
    this.textBox1.Text=this.textBox1.Text.Trim()+"-";
    this.textBox1.SelectionStart=this.textBox1.Text.Trim().Length;
    return;
    } if(this.textBox1.Text.Trim().Length==4)
    {
    this.textBox1.Text=this.textBox1.Text.Trim()+"-";
    this.textBox1.SelectionStart=this.textBox1.Text.Trim().Length;
    return;
    }
    }
      

  14.   

    主要是
    this.textBox1.SelectionStart 属性可以定位 光标的位置。问题又解决之道,我也高兴,又学了新东西。
      

  15.   

    寒一个!
    楼上的方式是可以实现,但是频繁的刷新……
    User会骂的
      

  16.   

    Web页面中
    你使用的是后台代码,不刷新怎么搞定?即使SmartNevigation,也会影响体验的啊
      

  17.   

    感觉与日历控件的: yyyy-MM-dd,的格式输入差不多.
      

  18.   

    直接用maskedTextBox就好了。.只要自定义个输入的格式就可以了。.
      

  19.   

    to:Top  
     venus0314(雪侯鸟) ( ) 信誉:100  
    Web页面中
    你使用的是后台代码,不刷新怎么搞定?即使SmartNevigation,也会影响体验的啊
    ************************我搞的是 winForm 下的,web 用着是没办法的,可以使用jscript实现要方便的多
      

  20.   

    试试这个,我刚写的,虽繁但应该有用:
    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
    int start = ((TextBox)sender).SelectionStart;
    if(start <9 && (start == 2|| start == 7))
    {
    start ++;
    }
    string format = this.textBox1.Text;
    char [] ch = format.ToCharArray();
    ch[start] = e.KeyChar;
    ch[2] = '-';
    ch[7] = '-';
    this.textBox1.Text = new string(ch);
    if(start < 9)
    {
    ((TextBox)sender).SelectionStart = start +1;
    }
    else
    {
    ((TextBox)sender).SelectionStart = 0;
    }
    }
      

  21.   

    this.textBox1.Location = new System.Drawing.Point(224, 216);
    this.textBox1.Name = "textBox1";
    this.textBox1.TabIndex = 2;
    this.textBox1.Text = "  -    -  ";
    this.textBox1.KeyPress += new KeyPressEventHandler(textBox1_KeyPress);
    this.textBox1.MaxLength = 10;
      

  22.   

    WebForm里用javascript可以实现的
    WinForm里实现跟javascript一样,只是用C#改写一下就OK了