10 c# richtextbox autoresize winforms measure
有人可以解释我如何测量richtextbox控件中的字符串,以便我可以根据其内容自动调整richtextbox控件的大小?
谢谢
编辑:
我已经考虑过了,因为如果RichTextBox控件中有不同的字体,下面的答案将不起作用,如果,我可以得到richtextbox控件的左上角,然后得到右下角的coords rtb内最后一行文字.这基本上会给我RichTextBox控件中字符串的宽度和高度.这可能吗?或者这样做是不是一个坏主意?
小智 7
将以下代码放入ContentsResized
事件中:
Private Sub rtb_ContentsResized(ByVal sender As Object, ByVal e As System.Windows.Forms.ContentsResizedEventArgs) Handles txtQuestion.ContentsResized
Dim h = e.NewRectangle.Height, w = e.NewRectangle.Width
h = Math.Max(h, sender.Font.Height)
h = Math.Min(h, Me.ClientSize.Height - 10 - sender.Top)
h += sender.Height - sender.ClientSize.Height + 1
sender.Height = h
End Sub
Run Code Online (Sandbox Code Playgroud)
您可以通过调用来测量字符串TextRenderer.MeasureText
。
但是,如果文本包含多种字体,则这将不起作用。
编辑:您正在寻找GetPositionFromCharIndex
方法。
请注意,如果有多行,则应取每行最后一个字符的 X 坐标的最大值。