簡體   English   中英

啟用但無法選擇的菜單項

[英]Enabled but unselectable menu item

在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”,以避免單擊和按鍵,然后它會自動變成灰色,這是不需要的,並且不會顯示工具提示文本。
如果啟用了“ labelItem”,則顏色為OK,不能用鍵選擇項目,而可以用鼠標選擇,單擊鼠標即可將焦點對准自身。 這也是不需要的,但顯示了工具提示文本。

在描述的情況下,這是一種使“ labelItem”被啟用並能夠顯示工具提示文本但無法選擇的方式嗎? 簡而言之...如何使所描述的項目變為彩色(啟用),但不接受鼠標單擊並獲得焦點?

不要禁用該項目。 設置禁用狀態圖像,然后在click事件處理程序中,忽略您不想激活的項目的大小寫。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM