已启用但无法选择的菜单项

时间:2015-08-10 18:54:12

标签: vb.net

在WinForms应用程序中,我需要在动态创建的ContextMenuStrip中使用一些“标题” 该标题是在ContextMenuStrip_Opening事件处理程序中组成的可更改文本。

为此,我正在尝试使用带有标签的ToolStripControlHost,如下所示:

Dim labelItem As ToolStripControlHost = New ToolStripControlHost(New Label)
...
labelItem.BackColor = Color.Transparent
labelItem.ForeColor = Color.FromKnownColor(KnownColor.HotTrack)
labelItem.ToolTipText = "mytooltiptext"
mycontextmenu.Items.Add(labelItem)

这项工作几乎没问题,但是......

我尝试禁用“labelItem”以避免点击和按键,然后它自动变为灰色不需要的东西,然后不显示tooltiptext。
如果启用了“labelItem”,则颜色正常,不能使用键选择项目,但可以使用鼠标选择项目,鼠标单击时可以将焦点置于自身。这也是不受欢迎的,但显示了tooltiptext。

在描述的情况下是否有一种方法可以启用“labelItem”并能够显示tooltiptext但是无法选择?简而言之......如何制作一个类似的项目,它将是彩色的(已启用)但不接受鼠标点击并获得焦点?

2 个答案:

答案 0 :(得分:0)

禁用该项目。设置禁用状态图像,然后在单击事件处理程序中,忽略您不想激活的项目的大小写。

答案 1 :(得分:0)

EnabledDisabled是控件外观和行为的预定义。 Disabled始终表示无法点击控件。

如果您需要替代行为,则需要自己编写。我建议在表单中跟踪两个全局变量:您的项目是否应该在布尔值中处于活动状态,哪个对象当前在对象中具有焦点。然后使用这些来编写您的点击事件行为。例如:

Public Class Form1
    Public RunEvent As Boolean
    Public HasFocus As Object

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If RunEvent Then
            'Do something
        Else
            HasFocus.Focus()
        End If
    End Sub
End Class