Мне нужно отобразить таблицу в расширенном тексте в окне формы.Это таблица только из двух столбцов, поэтому табуляция прекрасно работает для выравнивания всего (так как RichTextBox не поддерживает таблицы RTF).Однако иногда табуляция неверна из-за нефиксированной ширины шрифтов.
Итак, мне нужен способ измерить ширину пикселя конкретной строки с помощью определенного шрифта (Arial 10) и пробела или панели вкладок, чтобы убедиться, что все выровнено.
Я знаю о методе Graphics.MeaureString, но, поскольку он находится в поле расширенного текста, у меня нет инициализированной переменной PaintEventArgs, и это выглядит как излишнее создание JUST для измерения одной строки.
От MSDN :
Private Sub MeasureStringMin(ByVal e As PaintEventArgs)
' Set up string.
Dim measureString As String = "Measure String"
Dim stringFont As New Font("Arial", 16)
' Measure string.
Dim stringSize As New SizeF
stringSize = e.Graphics.MeasureString(measureString, stringFont)
' Draw rectangle representing size of string.
e.Graphics.DrawRectangle(New Pen(Color.Red, 1), 0.0F, 0.0F, _
stringSize.Width, stringSize.Height)
' Draw string to screen.
e.Graphics.DrawString(measureString, stringFont, Brushes.Black, _
New PointF(0, 0))
End Sub
Итак, является ли лучшим вариантом просто создать фиктивный экземпляр PaintEventArgs?Если да, то как лучше всего это сделать (поскольку мне придется вызывать этот метод измерения строк несколько сотен раз)?
Кроме того, я не хочу использовать шрифт фиксированной ширины.- они просто выглядят не так хорошо.