2014-11-24 2 views
0

При использовании MenuStrip хорошо иметь элементы и подэлементы определенной ширины, и эта ширина не должна изменяться. Предположим, что ширина изменяется на большую длину, вместо того, чтобы изменять весь размер элемента MenuStrip, чтобы он соответствовал тексту, должен быть способ отображения только некоторого текста, например. Многоточие.Как добавить Эллипсис к элементу менюStrip Текст

До:

enter sdescription here

После

After

Очевидно, я редактировал текст этого MenuStrip MenuItem, чтобы продемонстрировать, что я имею в виду. Это возможно? если да, то как я могу это достичь?

+0

Я предполагаю, что одна запись динамически добавляется/обновляется во время выполнения? В противном случае у вас уже есть решение – Plutonix

+0

Если вы не возражаете сохранить исходный текст где-то в другом месте (например, в свойстве Tag), вы можете создать рекурсивную функцию, чтобы найти все элементы с длиной текста дольше определенного значения и сокращать эти предметы надлежащим образом. – CrimsonKing

+0

Элементы динамически добавляются во время выполнения. – Zer0

ответ

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

+0

Добро пожаловать. Счастливое программирование! :-) – SSS