【发布时间】:2016-01-19 13:30:08
【问题描述】:
我正在根据机器上可用的 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 将是相同的助记符),这将导致问题。但我仍然有兴趣了解如何 完成这项工作,以及为什么我的代码不起作用。
【问题讨论】:
-
字符串是不可变的,所以不要忘记使用 Insert() 的返回值。 tsmi.Text = p.Insert(3, "&")
-
您的关注是一件好事,但这在 MRU 列表中仍然很常见。他们所做的是在前 10 个项目中添加助记符(第 10 个获得 0 上的助记符),然后对 10 之后的项目没有助记符。由于前 10 个可能是最常用的,这仍然很有帮助。或者,重复助记符将起作用,每次按下键时焦点只会在重复项之间移动。它只是不会即时切换它们。
-
@HansPassant & @CodyGray 太好了,谢谢!汉斯,你想这样回答吗?