Как получить реальную высоту TextBox? - PullRequest
5 голосов
/ 12 февраля 2012

Сначала я подумал, что это будет примерно так:

int height = textbox.lines.length * lineheight;

Но он просто считает "\ xd \ n" и строки могут быть перенесены.Могу ли я получить количество отображаемых строк или фактическую высоту текстового поля, когда все видно (высота текста внутри)?

Ответы [ 2 ]

6 голосов
/ 12 февраля 2012

Я не знаю, сможете ли вы когда-нибудь получить идеальное измерение, но это близко:

private int GetTextHeight(TextBox tBox) {
  return TextRenderer.MeasureText(tBox.Text, tBox.Font, tBox.ClientSize,
           TextFormatFlags.WordBreak | TextFormatFlags.TextBoxControl).Height;
}

TextBox может быть глупым.Если включен многострочный режим, если вы нажимаете символ, который приводит к переносу слова в слова, нажатие на клавишу backspace не приводит к его «un-word-wrap», если я не изменю размер TextBox.Это было на Win7-64.Я не думаю, элемент управления TextBox всегда делал это.

0 голосов
/ 17 августа 2015

Функция GetLineFromCharIndex () выдает индекс отдельной строки, даже если текст переносится.

int lineCount = textBox1.GetLineFromCharIndex(int.MaxValue) + 1;
int lineHeightPixel = TextRenderer.MeasureText("X", textBox1.Font).Height;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...