摘要: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程式開發與介面設計秘訣」一書。
章立民研究室