簡體   English   中英

ContextMenu沒有顯示,我也不知道為什么

[英]ContextMenu not displaying, and I don't know why

我正在使用從DataGridView繼承的用戶控件編寫C#(.NET 3.5)應用程序。 當用戶右鍵單擊列標題時,我想顯示一個上下文菜單。

我實際上在我的應用程序中有2種形式的工作發現。 我很困惑,因為ContextMenu不會在第三種形式的同一控件上顯示。 我確實看到觸發了Popup事件,但是我看不到屏幕上正在繪制菜單,並且沒有調用任何菜單項事件處理程序。

我完全不知道為什么我的上下文菜單沒有繪制,這讓我很生氣。

不幸的是,我的代碼太復雜了,無法在此處發布所有代碼……我包括構建和顯示菜單的小節。 我不認為問題出在此代碼中,但是我不知道它還會在哪里。

if (hti.RowIndex == -1)
{
    ClickedColumnHeader = this.Columns[hti.ColumnIndex];

    //Build a context menu and show it.
    ContextMenu mnu = new ContextMenu();
    mnu.MenuItems.Clear();
    MenuItem mnuHide = new MenuItem("Hide");
    mnuHide.Click += new EventHandler(mnuHide_Click);
    MenuItem mnuRename = new MenuItem("Rename...");
    mnuRename.Click += new EventHandler(mnuRename_Click);
    MenuItem mnuCurrencyFormat = new MenuItem("Format as Currency");
    mnuCurrencyFormat.Checked = false;

    if (this.Columns[hti.ColumnIndex].DefaultCellStyle.Format == "c")
    {
        mnuCurrencyFormat.Checked = true;
    }
    mnuCurrencyFormat.Click += new EventHandler(mnuCurrencyFormat_Click);
    MenuItem mnuSeparator = new MenuItem("-");
    MenuItem mnuShow = new MenuItem("Show");

    foreach (DataGridViewColumn col in this.Columns)
    {
        if (col.Visible == false)
        {
            MenuItem x = new MenuItem(col.HeaderText);
            x.Click += new EventHandler(x_Click);
            mnuShow.MenuItems.Add(x);
        }
    }

    mnu.MenuItems.Add(mnuHide);
    mnu.MenuItems.Add(mnuRename);
    mnu.MenuItems.Add(mnuCurrencyFormat);
    mnu.MenuItems.Add(mnuSeparator);
    mnu.MenuItems.Add(mnuShow);

    //for debugging...
    mnu.Popup += new EventHandler(mnu_Popup);
    mnu.Collapse += new EventHandler(mnu_Collapse);

    mnu.Show(this, new System.Drawing.Point(f.X, f.Y));
}

我非常感謝社區可以提供的任何幫助。 我真的希望我在這里做些愚蠢的事情。

是的,沒有足夠的信息來重新創建問題,但是我可以提供此信息,如果您將其用於其他兩種形式,則問題不在於繼承的代碼。 問題出在第三種形式。

如果您真的想花些時間,請嘗試從頭開始進行第4次測試,看看是否會出現同樣的錯誤。 檢查所有事件處理程序。 聽起來您在表單1和2上連接了一個,但在3上沒有。

暫無
暫無

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

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