winform richtextbox自定义控件时高度自适应
程序员文章站
2022-06-07 13:20:33
...
描述:自定义了一个userControl,名为RichTextBoxName(这只是个名字,不是RichTextBox控件),在这个userControl里添加了一个RichTextBox控件,然后在其他控件需要显示这个userControl,希望richtextbox的高度可以根据内容自适应。
思路:先获得richtextbox的高度,然后调整userControl的高度。
这里需要把richtextbox的anchor设好,usercontrol高度变化的时候里面的richtextbox需要跟着变化
获得richtextbox的高度,需要知道它里面的内容,计算出一共有几行,然后用每一行的高度乘以行数就是richtextbox的高度了。
一开始我存的是字符串,根本get不到行数,永远都是一行。所以需要在字符串中加入分隔符,这样就知道有几行了。然后获得每一行的高度,把第一行和第二行的位置都得到,相减就是一行的高度。
代码:
userControl(RichTextBoxName)中定义一个外部可以调用的属性,这样获得内容就可以开始计算高度了;
public string Content
{
set
{
richTextBox1.Text = value;
int i = richTextBox1.Lines.Count(); //行数
System.Drawing.Point ptLine1 //第一行第一个字节的坐标
= richTextBox1.GetPositionFromCharIndex(richTextBox1.GetFirstCharIndexFromLine(0));
if (i > 1) 如果不止一行
{
System.Drawing.Point ptLine2 //第二行第一个字节的坐标
= richTextBox1.GetPositionFromCharIndex(richTextBox1.GetFirstCharIndexFromLine(1));
int TextLineHeight = ptLine2.Y - ptLine1.X; //每一行高度
this.Height = i * TextLineHeight;
}
}
}
上一篇: gulp 2:几个常见问题及解决方案
下一篇: gulp4用法