Разместить текст внутри TextBox в формах окон VB.net

В одном из моих приложений мне требуется разместить текст внутри текстового поля, а ширина и высота текстового поля должны меняться в зависимости от длины текста. Так что я использую

TextSize = gr.MeasureString(textcontent, TextFont)

где textcontent - это текст, а TextFont - тип шрифта (см. эту ссылку).

Но если текст содержит большое количество символов, скажем, требуется около 2 строк внутри формы (если текст не помещается в одну строку), то мне нужно также установить высоту. Поэтому я хочу, чтобы текст правильно помещался внутри текстового поля для любого заданного текста. Также, если есть несколько строк (для большого текста), то не должно быть лишних пробелов в конце первой строки и между второй строкой. Так как это можно сделать?

2 ответа

Это будет сложнее, если вы используете обычный элемент управления TextBox, так как свойства ограничены. Поэтому я позволил себе вместо этого предложить использовать элемент управления RichTextBox, поскольку он все еще является TextBox, но с дополнительными функциями... Поэтому попробуйте поместить элемент управления RichTextBox в форму и добавить этот код...

Private Sub RichTextBox1_ContentsResized(sender As Object, e As System.Windows.Forms.ContentsResizedEventArgs) Handles RichTextBox1.ContentsResized
    RichTextBox1.Height = e.NewRectangle.Height + 12
End Sub

Сделай что-то вроде этого...

  1. Определите максимальную ширину (Mx) текстового поля в соответствии с размером формы или по вашему желанию.
  2. Вычислите длину L, необходимую для строки, как вы делаете.. TextSize = gr.MeasureString(textcontent, TextFont)
  3. Если L меньше или равно Mx, измените ширину текстового поля на L.
  4. Если L больше, чем Mx, то коэффициент высоты (Hf) = L/Mx. Установите txtBox1.Multiline = true и измените высоту txtBox1 на txtBox1.Height * Hf и установите ширину txtBox1 = Mx
Другие вопросы по тегам