Разместить текст внутри 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
Сделай что-то вроде этого...
- Определите максимальную ширину (Mx) текстового поля в соответствии с размером формы или по вашему желанию.
- Вычислите длину L, необходимую для строки, как вы делаете..
TextSize = gr.MeasureString(textcontent, TextFont)
- Если L меньше или равно Mx, измените ширину текстового поля на L.
- Если L больше, чем Mx, то коэффициент высоты (Hf) = L/Mx. Установите txtBox1.Multiline = true и измените высоту txtBox1 на txtBox1.Height * Hf и установите ширину txtBox1 = Mx