2014-11-24 93 views
0

使用MenuStrip时,最好让项目和子项目具有一定的宽度,并且该宽度不应改变。假设宽度确实改变为很大的长度,而不是改变MenuStrip项目的整个大小以适应文本,应该只有一种方式来显示一些文本,例如省略。如何将省略号添加到MenuStrip项目文本

前:

enter sdescription here

After

显然,我编辑了这个MenuStrip中菜单项的文字来证明我的意思。这可能吗?如果是的话我怎么能做到这一点?

+0

我猜一个条目是在运行时动态添加/更新?否则,你已经有解决方案 – Plutonix 2014-11-24 14:30:44

+0

如果你不介意保存原始文本的其他地方(例如,在标签属性),你可以创建一个递归函数来找到所有文字长度的物品比一些定义值长的时间和缩写这些项目适当。 – CrimsonKing 2014-11-24 16:00:56

+0

项目在运行时使用 – Zer0 2014-11-24 16:59:08

回答

0
Public Class Form1 

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    Dim strPrograms(1, 4) '(0,*) = EXE name; (1,*) = screen name; (*,n) = Program Index 

    strPrograms(0, 0) = "ONE.EXE" : strPrograms(1, 0) = "First" 
    strPrograms(0, 1) = "TWO.EXE" : strPrograms(1, 1) = "Second" 
    strPrograms(0, 2) = "THREE.EXE" : strPrograms(1, 2) = "Third program description is too long" 
    strPrograms(0, 3) = "FOUR.EXE" : strPrograms(1, 3) = "Fourth" 
    strPrograms(0, 4) = "FIVE.EXE" : strPrograms(1, 4) = "Fifth" 

    Dim intMaxLength As Integer = 10 
    Dim tsmParent As ToolStripMenuItem = MenuStrip1.Items.Add("Programs") 
    For i As Integer = 0 To strPrograms.GetUpperBound(1) 
     Dim strScreenName As String = strPrograms(1, i) 
     If strScreenName.Length > intMaxLength Then 
     strScreenName = strScreenName.Substring(0, intMaxLength - 1) & "…" 
     End If 
     Dim tsm As New ToolStripMenuItem(strScreenName) 
     tsm.Tag = strPrograms(0, i) 
     AddHandler tsm.Click, AddressOf tsm_Click 
     tsmParent.DropDownItems.Add(tsm) 
    Next i 

    End Sub 

    Private Sub tsm_Click(sender As Object, e As EventArgs) 
    Dim strEXEName As String = DirectCast(sender, ToolStripMenuItem).Tag 
    MsgBox(strEXEName) 

    End Sub 
End Class 
+0

谢谢@SSS。没有工作 – Zer0 2014-11-25 13:18:42

+0

不客气。快乐编程! :-) – SSS 2014-11-26 00:16:30