本人使用的是vs.net2003,今想在一个textBox控件中实现格式化输入,在此向大家请教。
如2s-5-d5s8 (其中"-"在用户输入前就在,当用户输入完前规定字符长度,就会自动跳到下一个"-"后。)
就如同输入IP地址的效果一样。
希望大家请多指教,不胜感激!!!
如2s-5-d5s8 (其中"-"在用户输入前就在,当用户输入完前规定字符长度,就会自动跳到下一个"-"后。)
就如同输入IP地址的效果一样。
希望大家请多指教,不胜感激!!!
当键盘被按下或者弹起的时候检查t1是否输入足够字符
如果是把焦点移动到t2,依次类推
webform的话不如用多个TextBox
毕竟采用JS带来的效果不是很理想,用户体验很差,而且代码量不小
而采用多个Textbox,只需要针对于每个Textbox进行长度判断,若够位数则自动Tab一下即可
也可以在Value_changed事件里来做。
得使用JS控制,用户体验也不是很好
如果非得只用一个TEXTBOX也可以,最好是在用户输入指定数量字符后,自动为其添加“-”字符,用正则表达式来验证-_-|||
{
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;
}
}
this.textBox1.SelectionStart 属性可以定位 光标的位置。问题又解决之道,我也高兴,又学了新东西。
楼上的方式是可以实现,但是频繁的刷新……
User会骂的
你使用的是后台代码,不刷新怎么搞定?即使SmartNevigation,也会影响体验的啊
venus0314(雪侯鸟) ( ) 信誉:100
Web页面中
你使用的是后台代码,不刷新怎么搞定?即使SmartNevigation,也会影响体验的啊
************************我搞的是 winForm 下的,web 用着是没办法的,可以使用jscript实现要方便的多
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;
}
}
this.textBox1.Name = "textBox1";
this.textBox1.TabIndex = 2;
this.textBox1.Text = " - - ";
this.textBox1.KeyPress += new KeyPressEventHandler(textBox1_KeyPress);
this.textBox1.MaxLength = 10;
WinForm里实现跟javascript一样,只是用C#改写一下就OK了