请教关于文本框限制字符的问题!

xray2005 2006-08-03 07:32:04
我现在有一个文本框,C#,在VS2003里
因为textbox默认编码为unicode编码,也就是说汉字和英文字符他都看作占一个字符来计算,比如我如果设置了maxlenth=10时候,汉字也可以输入10个,英文字符也可以输入10个.


那么,现在我的目的是:如果输入汉字就只能输入5个汉字,也就是一个汉字占2个字符。
如果输入字母就只能输入10个,也就是一个英文字符占1个字符。


我把web.config里的字符集,改成gb2312也不行呢!


请教各位,如何实现呢!
3Q!
...全文
236 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cabee 2006-08-06
  • 打赏
  • 举报
回复
up
xray2005 2006-08-06
  • 打赏
  • 举报
回复
up + ing ...................!
阿牛138588 2006-08-06
  • 打赏
  • 举报
回复
当然楼主还有其他解决办法,比如每一次change时保存当前内容以及字节数(广域变量保存)
当这次change字节大于可容纳字节数那么把文本框的内容恢复到上一次内容,这个可能比较可行,因为如果你文本框的限制字符数是10000的话那么上面那个程序就会很费时(有个循环)。
阿牛138588 2006-08-06
  • 打赏
  • 举报
回复
仔细再看了一下,for那有错,不好意思,临时写的。应改为
for i as integer=1 to textbox1.text.lenght
dim str1 as string=textbox1.text.substing(i,1)
if System.Text.Encoding.Default.GetByteCount(str1)=2 then
l=l+2
else
l += 1
end if
if l=7 or l=8 then textbox1.text=textbox1.text.substring(1,i) '取3个汉字+1个字母(7字节)或取4个汉字或8个字母(8字节)

next
阿牛138588 2006-08-06
  • 打赏
  • 举报
回复
那就文本框的change事件加入这句
if System.Text.Encoding.Default.GetByteCount(TextBox1.Text)>10 then '文本框输入大于10
dim l as int16
for i as integer=1 to textbox1.text.lenght
dim str1 as string=textbox1.text.substing(i,1)
if System.Text.Encoding.Default.GetByteCount(str1)=2 then
if l=7 or l=8 then textbox1.text=textbox1.text.substring(1,i) '取3个汉字+1个字母(7字节)或取4个汉字或8个字母(8字节)
else
l=l+2
end if
next

一点建议,楼主自己看着办吧
xray2005 2006-08-05
  • 打赏
  • 举报
回复
............
xray2005 2006-08-04
  • 打赏
  • 举报
回复
up!
来人哦!
孟子E章 2006-08-03
  • 打赏
  • 举报
回复
类似这样
http://blog.csdn.net/net_lover/archive/2002/03/29/6898.aspx

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧