Visual Basic 2005 - 如何替卷标与按钮控件加上省略符号
当画面上的空间有限时,我们可能无法将控件中的文字完整显示出来,当遭逢此种状况时,我们通常会在控件中显示出省略符号「…」来表示尚有文字未显示出来。为了协助您制作出此类的效果,.NET Framework 2.0特别替Label与ButtonBase类别新增了AutoEllipsis属性,您只需将AutoEllipsis属性设定成True,并且将AutoSize属性设定成False,即可在有限宽度下所显示之部分文字的尾端显示出省略符号。
再次提醒您,Label控件与衍生自ButtonBase类别的控件(也就是Button、CheckBox与RadioButton等三种控件)都拥有AutoEllipsis属性。另外还要叮咛大家的,就是 .NET Framework 2.0已替Control类别新增了AutoSize属性,因此Label、Button、CheckBox与RadioButton等四种控件当然都拥有AutoSize属性。
图表1
图表2
图表1与2所示者是我们所撰写之程序范例的执行画面,显而易见地,我们将大小不足以完整显示出文字之Label与Button控件的AutoEllipsis属性设定成True,并且将AutoSize属性设定成False,以便使其显示出省略符号。此外正如图表1与2所示,我们替控件的MouseEnter与MouseLeave事件撰写下列的事件处理例程,以便使得当鼠标指针移入控件的上方时就完整显示出文字,当鼠标指针移出控件时又会缩回原来的大小:
Private Sub btnGo_MouseEnter(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles btnGo.MouseEnter
btnGo.AutoSize = True
End Sub
Private Sub btnGo_MouseLeave(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles btnGo.MouseLeave
btnGo.AutoSize = False
btnGo.AutoEllipsis = True
End Sub
Private Sub lblAboutMe_MouseEnter(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles lblAboutMe.MouseEnter
lblAboutMe.AutoSize = True
End Sub
Private Sub lblAboutMe_MouseLeave(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles lblAboutMe.MouseLeave
lblAboutMe.AutoSize = False
End Sub
其实有一点是非常值得玩味的。事实上您并不见得要如上述作法一样替已加上省略符号的控件撰写MouseEnter与MouseLeave事件,毕竟之所以要将AutoEllipsis属性设定成True来显示出省略符号的目的就是因为画面空间不足。请大家特别注意图表3,我们并未替此一Label控件额外撰写动态完整显示文字的事件处理例程,而只是单纯地让其显示出省略符号,在这种情况下,当您将鼠标指针移至其上方时,它所内含的完整文字将会自动以工具提示文字的方式显示出来。您说AutoEllipsis属性是不是很好用呢。
图表3
本文节录自《Visual Basic 2005程序开发与界面设计秘诀》一书,特此声明之。Visual C# 2005的用户请参阅《Visual C# 2005程序开发与界面设计秘诀》一书。