Строка меры в Управлении RichTextBox

Кто-то может объяснить, как я пошел бы об измерении строки в управлении richtextbox так, чтобы я мог автоматически изменить размеры управления richtextbox согласно своему содержанию?

Спасибо

Править:

Я думал об этом, и так как ниже ответа не будет работать, если будут различные шрифты в Контроле RichTextBox, что, если, я мог бы добраться, верхние левые провода richtextbox управляют и затем получают нижние правые провода самой последней строки текста в rtb. Это по существу дало бы мне Ширину и Высоту строки в Управлении RichTextBox. Действительно ли это возможно? Или действительно ли это - плохая идея сделать это этот путь?

10
задан 2 March 2010 в 17:14
поделиться

3 ответа

Try calling GetPreferredSize(Size.Empty). Он определен в классе Control и, если переопределить свойство RichTextBoxControl, должен дать вам то, что вы ищете.

Если вы передадите в метод что-то, отличное от Size.Empty, то он будет использовать это значение в качестве максимального ограничения. Использование Size.Empty означает, что потенциальный размер не ограничен.

3
ответ дан 4 December 2019 в 00:24
поделиться

Предполагая, что кто-то набирает текст в контроле, вы можете использовать событие для запуска каждый раз, когда вводится символ (увеличивая счетчик) и уменьшая, когда он удаляется. Это даст вам истинный счетчик.

Edit:

Пробовали ли вы настроить высоту таким образом?

richTextBox1.Height = (int)(1.5 * richTextBox1.Font.Height) + richTextBox1.GetLineFromCharIndex(richTextBox1.Text.Length + 1) * richTextBox1.Font.Height + 1 + richTextBox1.Margin.Vertical;

richTextBox1.SelectionStart = 0;

richTextBox1.SelectionStart = richTextBox1.Text.Length;

Или вы можете сделать это с помощью Width:

Graphics g = Graphics.FromHwnd(richTextBox1.Handle);

SizeF f = g.MeasureString(richTextBox1.Text, richTextBox1.Font);
richTextBox1.Width = (int)(f.Width)+5;
2
ответ дан 4 December 2019 в 00:24
поделиться

Вы можете измерить строку, вызвав TextRenderer.MeasureText.

Однако, если текст содержит несколько шрифтов, это не сработает.

EDIT: Вы ищете GetPositionFromCharIndex метод.
Обратите внимание, что если строк несколько, вы должны взять максимальное значение координат X последнего символа в каждой строке.

0
ответ дан 4 December 2019 в 00:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: