自动换行的文本框中换行的地方有没有换行符chr(10)

srxgs 2003-08-24 03:01:16
如果设置文本框为自动换行,当某一行文本自动换行后,换行的地方好象没有换行符。
但我想知道文本在哪个字符处被换行了,怎么办?
...全文
439 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
pigpag 2003-08-24
  • 打赏
  • 举报
回复
VB.net里面的Graphics.MeasureString和VB6的PictureBox.TextWidth/TextHeight方法功能一致。
一般说来,要这样:获取TextBox的“客户区”宽度,用一个隐藏的PictureBox进行TextWidth计算,判断换行位置。这样做非但繁,而且容易计算出错。
canyqf 2003-08-24
  • 打赏
  • 举报
回复
VB6里面不会。。。
canyqf 2003-08-24
  • 打赏
  • 举报
回复
ft,发错论坛了。。
canyqf 2003-08-24
  • 打赏
  • 举报
回复
可以先得到文本框的宽度,然后测量可容纳的字符串内容。

前段时间为了模拟自动换行写了一段代码,共享:
截取一个字符串在一定宽度下的显示内容,不过针对的字符串不能有回车,否则可能会得到错误结果。宽度不够的话会以空格填充。计算单元是字符,而不是词。


'获取在指定宽度内,可容纳的指定字体字符串最长子字符串
'参数说明: Text 测量字符串,printFont 使用字体,Length 截取的打印长度
'函数返回: 截取所得子字符串
'Added By Canny, 2003.7.22
'Modified, 2003.8.6
Private Function GetFitText(ByVal Text As String, ByVal printFont As Font, ByVal Length As Single) As String
Dim sngWidth As Single '字符串宽度
Dim intCharCnt As Integer = Text.Length '字符个数
Dim intTmp As Integer '保存上次尝试字符个数
Dim g As System.Drawing.Graphics

Text &= Space(255) 'Text长度不足时,以空格填充

g = (New System.Windows.Forms.Panel()).CreateGraphics

'每次测量时,添加一个非空白字符,使测量包含右边空格宽度
'添加非空白字符后的宽度增量
Dim addWidth As Single = g.MeasureString("ll", printFont).Width - g.MeasureString("l", printFont).Width

'计算各长度子字符串的打印宽度,获取最合适子字符串
sngWidth = g.MeasureString(Text.Substring(0, intCharCnt) & "l", printFont).Width - addWidth
Do
intTmp = intCharCnt '原字符数暂存
'尝试字符数=取整(原字符数 * 可容纳长度 / 原字符串打印宽度)
intCharCnt = CInt(intCharCnt * (Length / sngWidth))

If intCharCnt > Text.Length Then '若给定字符串长度小于可容纳长度,直接返回给定字符串
Text &= Space(255) 'Text长度不足时,以空格填充
End If

'计算尝试字符串的打印宽度
sngWidth = g.MeasureString(Text.Substring(0, intCharCnt) & "l", printFont).Width - addWidth
If sngWidth > Length Then '若尝试字符串打印宽度大于可容纳长度,
Select Case intCharCnt - intTmp
Case 1
'并且尝试字符数比原字符数多1,则取原字符数
'原字符串打印宽度小于可容纳长度,多加一个字符后,打印宽度大于可容纳长度
intCharCnt = intTmp
Exit Do
Case 0
'并且尝试字符数与原字符数相等,减少一个字符重试
intCharCnt -= 1
End Select
End If
Loop Until intTmp = intCharCnt

g.Dispose()

Return Text.Substring(0, intCharCnt)
End Function
yjyb 2003-08-24
  • 打赏
  • 举报
回复
没有的!不知道该怎么确定哪个字符后换行啊!
或者你可以先人工确定一下文本框一行的长度,再一行一行来,代码自动判别的,我不知道啊!
onlineboy 2003-08-24
  • 打赏
  • 举报
回复
没有
sworddx 2003-08-24
  • 打赏
  • 举报
回复
换行好象就是chr(10),回车(vbkeyreturn)好象就是chr(13),记不得了
srxgs 2003-08-24
  • 打赏
  • 举报
回复
我说的是自动换行的地方有chr(10)吗?
回车的地方当然有chr(13)+chr(10)了
blood 2003-08-24
  • 打赏
  • 举报
回复
更正一下。是chr(13)+chr(10)
sworddx 2003-08-24
  • 打赏
  • 举报
回复
换行为 chr(14) + chr(10),也可以用 vbCrlf常量代替.你可以用instr找这些字符.

7,785

社区成员

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

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