簡體   English   中英

明確阻止ContextMenuStrip在C#中加載

[英]Explicitly Prevent ContextMenuStrip from Loading in C#

我需要在未設置特定標志時隱藏contextmenustrip。 由於我認為我們無法明確控制上下文菜單條的顯示/隱藏,因此我決定在與contextmenustrip關聯的控件上單擊鼠標右鍵。 這是一個UserControl,因此我嘗試處理了它的MouseClick事件,在該事件中我檢查了是否設置了標志以及按鈕是否為右鍵。 但是令我驚訝的是,該事件不會在鼠標右鍵單擊時觸發,而只會在鼠標左鍵觸發時觸發。

我有什么問題嗎,或者有什么解決方法?

檢測到正確的點擊,問題標題和說明已更改

經過更多研究后,當我處理控件上的Mouse_Down事件時,我單擊了右鍵。 但是,Am仍然一無所知,因為如何顯式阻止ContextMenuStrip加載 另一個問題是,為什么MouseClick沒有檢測到右鍵單擊?


當前工作

注冊事件處理程序

   userControl1.Control1.MouseDown += new MouseEventHandler(Control1_MouseDown);

 void Control1_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right && flag == false)
        {
           userControl1.Control1.ContextMenuStrip = null;
        }
        else
        {
            userControl1.Control1.ContextMenuStrip = contextMenuStrip1;
        }

    }

這是我目前正在使用的解決方法。 但是如何在ContextMenuStrip的Opening Event中更改它

當使用鍵盤上的上下文菜單鍵(或稱為上下文菜單)調用上下文菜單時,您的解決方案無論如何都會失敗。 您可以使用Opening事件來取消上下文菜單的打開。

有一個解決方法。

假設菜單項A設置了控制控件B上的上下文菜單的標志。

在A的click事件中,將b.ContextMenu = none設置為將其關閉,然后將b.ContextMenu設置回上下文菜單控件以將其重新打開。

在WinForms中,還有Click事件-右鍵單擊時會觸發該事件。

如果使用的是WPF,則應具有MouseRightButtonDownMouseRightButtonUp事件。

簽出此MSDN頁面上的表格,該表格列出了哪些控件會引發哪些點擊事件。 值得注意的是,Button,CheckBox,RichTextBox和RadioButton(以及其他一些按鈕)不會抬起並在右鍵單擊時發生事件。

暫無
暫無

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

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