У меня есть Приложение Windows Forms, где я отображаю некоторые клиентские данные в Маркировке. Я установил маркировку. AutoEllipsis = верный.
Если текст длиннее, чем маркировка, он похож на это:
Some Text
Some longe... // label.Text is actually "Some longer Text"
// Full text is displayed in a tooltip
который является тем, что я хочу.
Но теперь я хочу знать, использует ли маркировка функцию AutoEllipsis во времени выполнения. Как делают меня achive это?
Решение
Благодаря максимум Теперь я смог создать управление, которые пытаются приспособить целый текст в одной строке. Если кому-то интересно, вот код:
Public Class AutosizeLabel
Inherits System.Windows.Forms.Label
Public Overrides Property Text() As String
Get
Return MyBase.Text
End Get
Set(ByVal value As String)
MyBase.Text = value
ResetFontToDefault()
CheckFontsizeToBig()
End Set
End Property
Public Overrides Property Font() As System.Drawing.Font
Get
Return MyBase.Font
End Get
Set(ByVal value As System.Drawing.Font)
MyBase.Font = value
currentFont = value
CheckFontsizeToBig()
End Set
End Property
Private currentFont As Font = Me.Font
Private Sub CheckFontsizeToBig()
If Me.PreferredWidth > Me.Width AndAlso Me.Font.SizeInPoints > 0.25! Then
MyBase.Font = New Font(currentFont.FontFamily, Me.Font.SizeInPoints - 0.25!, currentFont.Style, currentFont.Unit)
CheckFontsizeToBig()
End If
End Sub
Private Sub ResetFontToDefault()
MyBase.Font = currentFont
End Sub
End Class
Мог нуждаться в некоторой точной настройке (сделайте размер шага и минимальное значение настраивающимися со свойствами видимости разработчика), но это работает вполне прилично в настоящий момент.
private static bool IsShowingEllipsis(Label label)
{
return label.PreferredWidth > label.Width;
}