2016-07-17重大更新

          其实有更好、更系统的方法,也是最近才发现的,分享给大家!!

        /// <summary>/// /// </summary>/// <param name="width"></param>public MyControl(int width): this(){this.Width = width;this.richtxtContent.Width = this.Width - 30;this.richtxtContent.WordWrap = true;this.richtxtContent.ScrollBars = RichTextBoxScrollBars.None;this.richtxtContent.ContentsResized += new ContentsResizedEventHandler(richtxtContent_ContentsResized);}/// <summary>/// /// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void richtxtContent_ContentsResized(object sender, ContentsResizedEventArgs e){RichTextBox rtb = sender as RichTextBox;if (rtb != null){rtb.Size = e.NewRectangle.Size;}}

-------------------------------------------------------------------------------------

  在WinForm开发中,经常会用到RichTextBox控件,也经常会碰到需要自动调节RichTextBox高度的场景。本人鉴于这种情况,查阅了一些资料,确定了正确的方法。

  基本思路就是获取RichTextBox中一行文本的实际高度。

  1、首先计算出RichTextBox中文本的行数
     
        int rowCount = this.txtBox.GetLineFromCharIndex(this.txtBox.SelectionStart) + 1;
 
  2、然后计算一行文本的高度
    System.Drawing.Point ptLine1  //第一行第一个字节的坐标
        = this.txtBox.GetPositionFromCharIndex(this.txtBox.GetFirstCharIndexFromLine(0));
    System.Drawing.Point ptLine2  //第二行第一个字节的坐标
        = this.txtBox.GetPositionFromCharIndex(this.txtBox.GetFirstCharIndexFromLine(1)); 
   
    其中GetFirstCharIndexFromLine是从指定行获取第一个字节的序号(index),GetPositionFromCharIndex则是获取指定序号(index)字节的坐标。
        注:为了取得正确的ptLine2,一定要保证RichTextBox文本至少有二行。
 
  3、然后,计算RichText的行高度
       
    int textLineHeight = ptLine2.Y - ptLine1.Y;
  4、然后,计算RichTextBox的高度
    this.txtBox.Height = rowCount * txtLineHeight
                               + this.txtBox.Margin.Top 
                               + this.txtBox.Margin.Bottom;
 
    其中,this.txtBox.Margin.Top为顶部空白,this.txtBox.Margin.Bottom为底部空白。
  5、然后就木有然后了~
     

转载于:https://www.cnblogs.com/junier/p/3211029.html

计算纯文本情况下RichTextBox实际高度的正确方法(.NET)相关推荐

  1. R语言使用timeROC包计算存在竞争情况下的生存资料多个标记物在相同时间下的cox及协变量分析AUC值、并可视化多个标记物在相同时间下的ROC值、多指标的ROC曲线(Time-dependent R

    R语言使用timeROC包计算存在竞争情况下的生存资料多个标记物在相同时间下的cox及协变量分析AUC值.并可视化多个标记物在相同时间下的ROC值.多指标的ROC曲线(Time-dependent R ...

  2. R语言使用timeROC包计算无竞争情况下的生存资料多个标记物在相同时间下的cox及协变量分析AUC值、并可视化多个标记物在相同时间下的ROC值、多指标的ROC曲线

    R语言使用timeROC包计算无竞争情况下的生存资料多个标记物在相同时间下的cox及协变量分析AUC值.并可视化多个标记物在相同时间下的ROC值.多指标的ROC曲线(Time-dependent RO ...

  3. R语言使用timeROC包计算无竞争情况下的生存资料多时间AUC值、R语言使用timeROC包的plotAUCcurve函数可视化多时间生存资料的不同标记物情况下对应的AUC曲线、并进行对比

    R语言使用timeROC包计算无竞争情况下的生存资料多时间AUC值.R语言使用timeROC包的plotAUCcurve函数可视化多时间生存资料的不同标记物情况下对应的AUC曲线.并进行对比 目录

  4. R语言使用timeROC包计算无竞争情况下的生存资料多时间AUC值、使用cox模型、并添加协变量、R语言使用timeROC包的plotAUCcurve函数可视化多时间生存资料的AUC曲线

    R语言使用timeROC包计算无竞争情况下的生存资料多时间AUC值.使用cox模型.并添加协变量.R语言使用timeROC包的plotAUCcurve函数可视化多时间生存资料的AUC曲线 目录

  5. html 下拉框高度,如何自定义设置select下拉框高度的优化方法

    在项目开发中经常会遇到select下拉框优化问题,默认的样式简直难看到死,所以大家都会想到去设置select高度问题,当然一些组件或者插件也可以实现对其完美优化,我之前的一篇文章也写到了相关优化方法& ...

  6. android自定义通知栏图标大小,Android不使用自定义布局情况下实现自定义通知栏图标的方法...

    本文实例讲述了Android不使用自定义布局情况下实现自定义通知栏图标的方法.分享给大家供大家参考,具体如下: 自定义通知栏图标?不是很简单么.自定义布局都不在话下! 是的,有xml布局文件当然一切都 ...

  7. Git管理 本地文件误删(提交和没提交情况下),恢复文件的方法

    注意:右键空白区域弹出的git的版本库浏览器窗口,为本地库.提交与否影响的是此处是否和资源管理器目录的一致. 1.Git管理 本地文件误删(没提交情况下),恢复文件的方法: 2.Git管理 本地文件误 ...

  8. matlab多基地声呐,声呐位置误差情况下的运动目标多基地定位方法

    CN 43-1258/TP ISSN 1007-130X 计算机工程与科学 Computer Engineering ] Science 第40卷第3 期2018年 3 月 Vol. #0,No. 3 ...

  9. 中断方式下进行串口通讯的正确方法

    转载:http://bbs.ednchina.com/BLOG_ARTICLE_277752.HTM 中断方式下进行串口通讯的正确方法 一般普遍的把串口通讯分为查询方式和中断方式.查询方式比较容易理解 ...

最新文章

  1. Sort Colors leetcode java
  2. seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  3. php memcached 扩展下载,编译安装 PHP 的 Memcached 扩展
  4. 接口测试指导方案 转:紫漪
  5. 网页连接不上java服务端,用Java插入IP时无法连接到服务器
  6. python日期格式转换成13位时间戳_python生成13位或16位时间戳以及反向解析时间戳的实例...
  7. 国务院:光伏发电指标开始向东北倾斜
  8. 为你的Web程序加个启动画面
  9. ICE Tester method viewer 的安装和使用,和客制化代码配合使用
  10. iOS底层探索之Runtime(二): objc_msgSend汇编快速查找分析
  11. SqlServer语句重命名数据库名称
  12. 概率论与数理统计【一】- 随机事件与概率(1):古典概型与几何概型
  13. Eureka-Client(Golang实现)
  14. HeadFIrst Ruby 第二章总结 methods and classes
  15. 视频转rtmp流及搭建视频流服务器
  16. matlab中xlsread无法打开文件,Matlab xlsread打开文件并清理
  17. 信息流广告的发展前景!
  18. 怎么把好几行弄成一行_怎么在word文档里把很多行一下合并成一行
  19. pr 导入 歌词 字幕
  20. 百度下拉词用python怎么抓取

热门文章

  1. 信号与系统sa函数求积分_胡昉祖《导数的概念》和《定积分》
  2. 【女生节】圆周率小数点后37373737位中,“37”出现的次数是?
  3. python字符串连接数字电视_【学习猿地】初识python脚本 #千万别看,我怕你控制不住...
  4. dev c++代码自动补全_python3代码如何自动补全?
  5. SQL Server高级查询之常见数据库对象(视图)第五章节
  6. JavaScript创建对象的三种方式之利用字面量创建对象及使用方法(1)
  7. Frequent values
  8. shǎ崽 OrOrOrOrz
  9. 由一维数组创建小根堆
  10. C++ 中的volatile关键字解析