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

srxgs 2003-08-24 03:01:16
如果设置文本框为自动换行,当某一行文本自动换行后,换行的地方好象没有换行符。
但我想知道文本在哪个字符处被换行了,怎么办?
...全文
391 10 打赏 收藏 转发到动态 举报
写回复
用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找这些字符.
没法下载,到这里折腾一把试试。 本文由abc2253130贡献 doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 C#(WINFORM)学习 一、 C#基础 基础 类型和变量 类型和变量 类型 C# 支持两种类型:“值类型”和“引用类型”。值类型包括简单类型(如 char、int 和 float 等)、枚举类型和结构类型。引用类型包括类 (Class)类 型、接口类型、委托类型和数组类型。 变量的类型声明 变量的类型声明 每个变量必须预先声明其类型。如 int a; int b = 100; float j = 4.5; string s1; 用 object 可以表示所有的类型。 预定义类型 下表列出了预定义类型,并说明如何使用。 类型 object 说明 所有其他类型的最终 基类型 字符串类型; 字符串是 Unicode 字符序列 8 位有符号整型 16 位有符号整型 32 位有符号整型 64 位有符号整型 示例 object o = null; 范围 string sbyte short int long string s = "hello"; sbyte val = 12; short val = 12; int val = 12; long val1 = 12; -128 到 127 -32,768 到 32,767 -2,147,483,648 2,147,483,647 -9,223,372,036,854,775,808 到 第1页 C#(WINFORM)学习 long val2 = 34L; 到 9,223,372,036,854,775,807 byte ushort 8 位无符号整型 16 位无符号整型 byte val1 = 12; ushort val1 = 12; uint val1 = 12; uint 32 位无符号整型 uint val2 = 34U; ulong val1 = 12; ulong val2 = 34U; ulong 64 位无符号整型 ulong val3 = 56L; ulong val4 = 78UL; float 单精度浮点型 float val = 1.23F;7 位 double val1 = 1.23; double 双精度浮点型 double val2 = ±5.0 × 10?324 ±1.7 × 10 308 0 到 255 0 到 65,535 0 到 4,294,967,295 0 到 18,446,744,073,709,551,615 ±1.5 × 10?45 ±3.4 × 10 38 到 到 4.56D;15-16 布尔型;bool 值或为 真或为假 字符类型;char 值是 一个 Unicode 字符 精确的小数类型, 具有 28 个有效数字 bool val1 = true; bool val2 = false; char val = 'h'; decimal val = bool char decimal DateTime ±1.0 × 10?28 ±7.9 × 10 28 到 1.23M;28-29 变量转换 简单转换: float f = 100.1234f; 可以用括号转换: short s = (short)f 也可以利用 Convert 方法来转换: string s1; s1=Convert.ToString(a); MessageBox.Show(s1); 常用 Convert 方法有: 第2页 C#(WINFORM)学习 C# Convert.ToBoolean Convert.ToByte Convert.ToChar Convert.ToDateTime Convert.ToDecimal Convert.ToDouble Convert.ToInt16 Convert.ToInt32 Convert.ToInt64 Convert.ToSByte Convert.ToSingle Convert.ToString Convert.ToUInt16 Convert.ToUInt32 Convert.ToUInt64 备注 Math 类 常用科学计算方法: C# Math.Abs Math.Sqrt Math.Ro

7,763

社区成员

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

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