如何区别英文字符和中文字符

singer314 2009-12-14 06:33:25
本人想做一文本框,要求当文本框里面输入的文本超过文本框的宽度时,文本框的高度自动增加,就变成多行的了,当输入是英文时比较好办,可以定义一个文本框宽度和字符数目的关系,当字符输入超过某一数目时增加文本框高度,但如果是中英文混的就难办了,因为一个中文字和一个英文子都是一个字符,但他们的宽度又是不一样的。如何区别英文字符和中文字符呢?
...全文
1004 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2009-12-15
  • 打赏
  • 举报
回复
?lenb(strconv("a啊",vbFromUnicode))
3
yachong 2009-12-15
  • 打赏
  • 举报
回复
中英文混排,用LenB(strconv(text1.text,vbfromunicode))即可知道总字节数
但是英文跟汉字不同,汉字一个字就是一个词,TextBox的自动断行很简单,可以从任意一个汉字断行。
而英文单词不能从单词中间断开,楼主这种靠计算字符数调整高度的方法似乎行不通。
yachong 2009-12-15
  • 打赏
  • 举报
回复
vbman2003 2009-12-15
  • 打赏
  • 举报
回复
Text1.MultiLine = True 时换行并没有vbcrlf之类,否则用textheight就简单多了....
vbman2003 2009-12-15
  • 打赏
  • 举报
回复
貌似也可以用另类方法解决输入中动态增加text控件的高度,下面是一个测试示例:

Option Explicit

Dim Num As Long
Dim TxtHeight As Long

Const TxtWidth = 3000

Private Sub Form_Load()
Num = 1
TxtHeight = Me.TextHeight(Text1.Text)
Text1.Width = TxtWidth
Text1.Height = 320
'Text1.MultiLine = True 在属性窗口中设置
End Sub

Private Sub Text1_Change()
If Me.TextWidth(Text1.Text) >= (Num * TxtWidth) Then
Num = Num + 1
Text1.Height = Text1.Height + TxtHeight
End If
End Sub


不完善,一个想法而已....
king06 2009-12-15
  • 打赏
  • 举报
回复
Private Function WhatChar(ByVal vStr As String) As Integer
Dim gbascii As Byte
Dim intChar As Integer
If Asc(vStr) < 0 Then
gbascii = AscB(StrConv(vStr, vbFromUnicode))

If gbascii - 160 > 15 Then
intChar = 0 ' 汉字
Else
intChar = 2 ' 全角符号
End If
Else
intChar = 1 ' 半角英文或数字
End If
WhatChar = intChar
End Function
singer314 2009-12-15
  • 打赏
  • 举报
回复
你这个方法可能只有在输入完毕后,再来计算行数,再来调整文本框高度,可是我要一个在输入的时候动态调整高度的方法啊[Quote=引用 5 楼 veron_04 的回复:]

[Quote=引用 5 楼 veron_04 的回复:]
这个不需要吧?
把文本框设置成多行的,它会自动换行的,换行时每行的最后一个字符都是vbcrf,通过它可以得到一共有多少行,再根据行数来设置文本框的高度。
[/Quote]
luofenghen 2009-12-14
  • 打赏
  • 举报
回复
都可以
贝隆 2009-12-14
  • 打赏
  • 举报
回复
这个不需要吧?
把文本框设置成多行的,它会自动换行的,换行时每行的最后一个字符都是vbcrf,通过它可以得到一共有多少行,再根据行数来设置文本框的高度。
cBirdNO1NO1 2009-12-14
  • 打赏
  • 举报
回复
推荐用ASC识别
SYSSZ 2009-12-14
  • 打赏
  • 举报
回复
用 Like 运算符作字符比较.
  • 打赏
  • 举报
回复
中文是2个么
咸清 2009-12-14
  • 打赏
  • 举报
回复
英文的字符值都比较小,你可以通过ASC码表查到英文的字符的范围

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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