我有一个Windows窗体应用程序,其中在“标签”中显示了一些客户端数据。
我已经设置了label.AutoEllipsis = true。
如果文本长于标签,则如下所示:
Some Text
Some longe... // label.Text is actually "Some longer Text"
// Full text is displayed in a tooltip
这就是我想要的。
但是现在我想知道标签在运行时是否利用了AutoEllipsis功能。
我该如何实现?
解决方案
多亏了max。现在,我能够创建一个试图将整个文本放在一行中的控件。如果有人感兴趣,请使用以下代码:
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;
}
关于c# - 如何检测带有AutoEllipsis的System.Windows.Forms.Label是否实际显示省略号?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3013247/