C#的richtextbox怎么知道每行能显示的字符数

loveFluffy 2015-06-01 10:05:01
因为richtextbox控件的显示格式是不确定的(根据情况进行改变),如何用代码随时获取当前格式下richtextbox每行所显示的字符数目。

说明:
1. 控件length和width始终保持不变。
2. 显示内容的font有较大变化,包括字号、字体、下划线等,但是一直都是显示的英文(没有中文)
3. 做的是WindowsFormsApplication

这样做的目的:
大家知道,本来richtextbox自己有wordwrap的能力,但是我做的是个文字游戏,显示的时候需要拉大单词的每个字母间的间距,所以我采用了插入空格的方法,但这样一来就把原本的单词相当于“拆散”了,控件自身的wordwrap功能就不能用了,所以我就先split了各个单词,打算自己写wordwrap功能,但这样一来就必须知道richtextbox每行能显示多少个字符,以便恰当地插入'\n' 进行换行。

----------
感谢各位
...全文
725 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
殘丿__花 2015-06-01
  • 打赏
  • 举报
回复
如果是一行数据被分隔多行的话,用richTextBox1.GetLineFromCharIndex()方法遍历第几个字符分行也行,比如你这个数据 richTextBox1.GetLineFromCharIndex(0-10) 返回的是0, richTextBox1.GetLineFromCharIndex(11)的时候返回1,说明换行了
殘丿__花 2015-06-01
  • 打赏
  • 举报
回复
richTextBox1.Lines 取的是所有行数据,返回的是string[] 直接对每行取lenth就行了
loveFluffy 2015-06-01
  • 打赏
  • 举报
回复
网上有说,读出richtextbox内的所有内容,然后用'\n' 去分割,我抱着试试的心态试了下,发现果然不行……
证明如图:






各位大神快来看看吧。。
loveFluffy 2015-06-01
  • 打赏
  • 举报
回复
但是,也有个问题,从我的倒数第二张图可以看到,里面的‘2’有5个,但是我期待输出的应该是4个,这里的程序把'\n' 也拿来判断了。 不过这不是啥问题啦,判断之前加个过滤就好啦,跳过转义字符。
loveFluffy 2015-06-01
  • 打赏
  • 举报
回复
测试结果如下:
1.代码:


2.结果:






三楼的意见可以解决我的问题。感谢~

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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