以编程方式设置 ToolStripMenuItem 助记符

Set ToolStripMenuItem mnemonic programmatically

我正在根据计算机上可用的 COM 端口将 ToolStripMenuItems 添加到菜单中,以允许用户检查一个以供使用。

我想为每个菜单项添加一个助记符,这样结果就好像我手动添加 "COM&6" 作为 ToolStripMenuItem.Text 属性 值一样。

但是,使用PortName.Insert(3, "&")似乎没有任何效果,或者我设置的文本不正确?

我怎样才能做到这一点?目前我这个段的完整代码如下:

For Each p As String In PortNames
    Dim tsmi As ToolStripMenuItem = New ToolStripMenuItem()
    tsmi.Name = p
    p.Insert(3, "&") 'This appears to do nothing
    tsmi.Text = p
    tsmi.CheckOnClick = True
    tsmi.Checked = False
    AddHandler tsmi.Click, AddressOf Me.PortSelectionTooStripMenuItem_Click
    CommunicationsToolStripMenuItem.DropDownItems.Add(tsmi)
Next

编辑:我意识到我可能实际上不想这样做,因为如果 COM 编号移动到两位数(例如 COM&1 和 COM&10 将是相同的助记符),这将导致问题。但我仍然有兴趣了解 可以 是如何完成的,以及为什么我的代码不起作用。

正如@HansPassant 评论的那样,字符串是不可变的,因此 Insert() 必须像共享函数一样使用。 也就是说,而不是:

p = tsmi.Name
p.Insert(3, "&")
tsmi.Text = p

我应该改用:

tsmi.Text = tsmi.Name.Insert(3, "&")