CLR开发基于RichTextBox的文本编辑器

mf1983 2017-08-15 10:57:10
工作需要开发一个文本编辑器,使用VS2010,基于CLR的WinForm编程,使用RichTextBox(以下简称rtb)组件。目前正在实现Tab键自动缩进4个当前字体宽度的功能。主要卡在了如何实现自动缩进4个当前字体宽度上。
目前我的解决方案是:获取rtb当前字体宽度及度量单位,然后换算为对应的pixel值,并设置rtb.SelectionIndent为该值。
过程如下:
1 获取当前插入点的Font,得到Font.Size。设置缩进宽度为4*Font.Size,单位是当前字体度量单位即Font.Unit
2 判断当前字体Font.Unit是何种类型,若是GraphicsUnit.Point,则开始进行单位换算
3 每个Point单位=1/72 inc,使用this.CreateGraphics获取当前Form的graphic,然后得到graphic.DipX,即当前Form中每inc包含的pixel数值。
4 换算,得到pixel值为4*Font.Size*(1/72)*graphic.DipX
但是发现这个值明显不符合4个字宽的要求,不知道哪里出了问题。
麻烦大神帮忙看下这个思路和过程是否正确?另外还有哪些更好的方法
哦,在KeyDown中直接判断Tab键并插入4个空格的方法暂时先不考虑,实在不行再说吧
...全文
177 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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