textbox锁定前二位,不允许修改!!! 一个textbox控件,一个ComboBox控件。textbox控件为6位。前二位,是comboBox控件的SelectedValue的值。当改变comboBox的值时,textbox前二位发生变化,后四位是手动修改。求代码嘿。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以拆开,前两位一个TextBox,后四位一个TextBox,最后两个TextBox合并起来就是结果。 ComboBox和TextBox并排放置,TextBox只输入后四位的值。保存的时候取出ComboBox的值和TextBox的值相加。 监测按键控制的变化,当产生KeyUp或KeyDown(不知道是哪一个,反正就是这两个)的时候作判断,如果更改的位数是第一、二位,返回FALSE否则返回TRUE 再说清楚一点吧,刚找了一下,在KeyDown中e.SuppressKeyPress = false; 这个允许输入e.SuppressKeyPress = true; 这个不允许输入上面是winform的webform是中onkeydown = return 函数名函数return true就是可以输入,return false就是不允许输入 预定TextChanged事件,然后在事件里面面加下面代码if (this.textBox1.Text.Length >= 2){this.textBox1.Text = this.comboBox1.SelectedValue.ToString() + this.textBox1.Text.Substring(2);}else{this.textBox1.Text = this.comboBox1.SelectedValue.ToString();} 最简单的就是使用两个textbox了,其次,使自定义用户控件了,也是放两个TextBox,不过用户控件的Text返回值可以自己处理效果最好的呢,利用重写OnTextChange方法咯。protected override void OnTextChanged(EventArgs e){ if(this.Text.StartsWith(HeadText)) { base.OnTextChanged (e); } else { this.Text=HeadText; this.Select(this.Text.Length,0);//光标置后 }}其中HeadText就是传入的头两位数了。如果不想重写的话,使用TextChange事件也一样。不管WebForm还是WinForm都是一样效果。 自己写个控件吧。或者用两个TextBox控件。 我就纳闷了,我好几天了,为什么我的得分还是0呢。而且找了半天都没有找到,如何改我的昵称,比如jacksonjian (不说) 的[不说]怎么加上的,谁能说说[不说]怎么设置。 jickie() ( ) 信誉:100 Blog 2006-12-12 16:25:06 得分: 0 我就纳闷了,我好几天了,为什么我的得分还是0呢。而且找了半天都没有找到,如何改我的昵称,比如jacksonjian (不说) 的[不说]怎么加上的,谁能说说[不说]怎么设置。 ============社区起点->我的技术社区->修改我的社区信息 可以使用 MaskedTextBox,动态修改它的Mask输入,将前两位固定 TO:mobydick(敌伯威|我排著队拿著爱的号码牌)ありがとうございます 自己做个用户控件吧,用textbox肯定是实现不了滴 1:要不就用2个textbox,2:要不就保存的时候直接+上前俩位 private string strPrv = "";//修改之前的字符串 private void textBox2_TextChanged(object sender, System.EventArgs e){if(this.textBox2.Text.Trim().Length <= 2){this.textBox2.Text = this.comboBox1.Text.Trim();}if(this.textBox2.Text.Trim().Length >= 2){if((this.textBox2.Text.Trim().Length == strPrv.Length) && (this.textBox2.Text.Trim().Substring(0,2)/*.ToUpper()*/ != this.strPrv.Substring(0,2)/*.ToUpper()*/)){this.textBox2.Text = strPrv;}else if((this.textBox2.Text.Trim().Length != strPrv.Length) && (this.textBox2.Text.Trim().Substring(0,2)/*.ToUpper()*/ != this.strPrv.Substring(0,2)/*.ToUpper()*/)){this.textBox2.Text = strPrv;}}strPrv = this.textBox2.Text.Trim();}private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e){if(this.textBox2.Text.Trim().Length > 2){strPrv = this.comboBox1.Text.Trim() + this.textBox2.Text.Trim().Substring(2);}else{strPrv = this.comboBox1.Text.Trim();}this.textBox2.Text = strPrv;} 基本能实现你要的功能,有些特殊情况可能还需要做处理.另外,加上try catch if(this.textBox2.Text.Trim().Length >= 2)把 "="去掉 用 maskedTextBox private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { this.maskedTextBox1.Mask = (this.comboBox1.Text.ToString().Substring(0, 2) + "AAAA"); } "AAAA" ---->> "&&&&" 可以拆开,前两位一个TextBox,后四位一个TextBox,最后两个TextBox合并起来就是结果。就这样实现!!!别的方法不要再去考虑了~~~ 这样长了啊,不知道还看的见不?在TextChang里面,word = TextBox1.Text[0]+TextBox.Text[1];if(word != ComboBox1.Text){ TextBox1.Text[0] = ComboBox1.Text[0]; TextBox1.Text[1] = ComboBox1.Text[1];}当然,改ComboBox的时候也要改了.没有完善,LZ应该做个记录改前长度的,否则应该会"吃字" function asdf(){ if (event.keyCode==退格键码 && document.getElementById("textBoxID").value.length<=2) { return false; }}onKeyDown="asdf()";这样行不? WCF在网络差的时候客户端调用阻塞后,WCF服务端会假死。 读入excel数据表时,经常报错 “定义了过多字段” 应用程序中的服务器错误。 关于listview的问题 急送10分,求一段返回参数的sql存储过程? 高分跪求!!!如何判断唯一性 关于进度条与线程的问题 【【又来狂甩分了】】大家教教我WinForm下的ReportViewer到底是怎么用的啊【200分,帮顶有喜哈】 C#如何实现定时启动程序? .net framework? 关于.net运行服务的问题 Color怎么转换为Brush?
保存的时候取出ComboBox的值和TextBox的值相加。
否则返回TRUE
e.SuppressKeyPress = false; 这个允许输入
e.SuppressKeyPress = true; 这个不允许输入上面是winform的webform是中onkeydown = return 函数名函数return true就是可以输入,return false就是不允许输入
{
this.textBox1.Text = this.comboBox1.SelectedValue.ToString() +
this.textBox1.Text.Substring(2);
}
else
{
this.textBox1.Text = this.comboBox1.SelectedValue.ToString();
}
其次,使自定义用户控件了,也是放两个TextBox,不过用户控件的Text返回值可以自己处理
效果最好的呢,利用重写OnTextChange方法咯。
protected override void OnTextChanged(EventArgs e)
{
if(this.Text.StartsWith(HeadText))
{
base.OnTextChanged (e);
}
else
{
this.Text=HeadText;
this.Select(this.Text.Length,0);//光标置后
}
}
其中HeadText就是传入的头两位数了。
如果不想重写的话,使用TextChange事件也一样。
不管WebForm还是WinForm都是一样效果。
而且找了半天都没有找到,如何改我的昵称,比如jacksonjian (不说) 的
[不说]怎么加上的,谁能说说[不说]怎么设置。
我就纳闷了,我好几天了,为什么我的得分还是0呢。
而且找了半天都没有找到,如何改我的昵称,比如jacksonjian (不说) 的
[不说]怎么加上的,谁能说说[不说]怎么设置。
============
社区起点->我的技术社区->修改我的社区信息
ありがとうございます
2:要不就保存的时候直接+上前俩位
{
if(this.textBox2.Text.Trim().Length <= 2)
{
this.textBox2.Text = this.comboBox1.Text.Trim();
}
if(this.textBox2.Text.Trim().Length >= 2)
{
if((this.textBox2.Text.Trim().Length == strPrv.Length) &&
(this.textBox2.Text.Trim().Substring(0,2)/*.ToUpper()*/ != this.strPrv.Substring(0,2)/*.ToUpper()*/))
{
this.textBox2.Text = strPrv;
}
else if((this.textBox2.Text.Trim().Length != strPrv.Length) &&
(this.textBox2.Text.Trim().Substring(0,2)/*.ToUpper()*/ != this.strPrv.Substring(0,2)/*.ToUpper()*/))
{
this.textBox2.Text = strPrv;
}
}
strPrv = this.textBox2.Text.Trim();
}private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
if(this.textBox2.Text.Trim().Length > 2)
{
strPrv = this.comboBox1.Text.Trim() + this.textBox2.Text.Trim().Substring(2);
}
else
{
strPrv = this.comboBox1.Text.Trim();
}
this.textBox2.Text = strPrv;
} 基本能实现你要的功能,有些特殊情况可能还需要做处理.
另外,加上try catch
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
this.maskedTextBox1.Mask = (this.comboBox1.Text.ToString().Substring(0, 2) + "AAAA"); }
在TextChang里面,
word = TextBox1.Text[0]+TextBox.Text[1];
if(word != ComboBox1.Text)
{
TextBox1.Text[0] = ComboBox1.Text[0];
TextBox1.Text[1] = ComboBox1.Text[1];
}
当然,改ComboBox的时候也要改了.没有完善,LZ应该做个记录改前长度的,否则应该会"吃字"
{
if (event.keyCode==退格键码 && document.getElementById("textBoxID").value.length<=2)
{
return false;
}
}
onKeyDown="asdf()";这样行不?