在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但是无法选择?简而言之......如何制作一个类似的项目,它将是彩色的(已启用)但不接受鼠标点击并获得焦点?
答案 0 :(得分:0)
禁用该项目。设置禁用状态图像,然后在单击事件处理程序中,忽略您不想激活的项目的大小写。
答案 1 :(得分:0)
Enabled
和Disabled
是控件外观和行为的预定义。 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