【问题标题】:How to add Ellipsis to MenuStrip Item Text如何将省略号添加到 MenuStrip 项目文本
【发布时间】:2015-01-22 05:30:30
【问题描述】:

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

之前:

之后

很明显,我编辑了这个 MenuStrip MenuItem 的文本来说明我的意思。这可能吗?如果是这样,我该如何实现?

【问题讨论】:

  • 我猜一个条目是在运行时动态添加/更新的?否则你已经有了解决方案
  • 如果您不介意将原始文本保存在其他地方(例如,在 Tag 属性中),您可以创建一个递归函数来查找所有文本长度大于某个定义值的项目,并且适当地缩写这些项目。
  • 项目在运行时动态添加
  • 如果您想要一个恒定的长度,请使用Substring,然后只需附加...。确保您使用长字符串作为工具提示或其他内容,但您不希望少数文件名条目只是说 C:\Windows...!
  • 这是我最初的计划,但是我使用菜单项文本来启动程序,因为菜单项用于存储文件路径。我直接从菜单项中获取完整路径。如果我使用子字符串,它将不包含完整路径。我该如何解决这个问题?

标签: vb.net text menuitem ellipsis menustrip


【解决方案1】:
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

【讨论】:

  • 感谢@SSS。做的工作
猜你喜欢
  • 2015-01-08
  • 1970-01-01
  • 2013-02-09
  • 1970-01-01
  • 2013-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多