簡體   English   中英

隱藏和取消隱藏上下文條菜單項c#

[英]hide and unhide context strip menu item c#

        if(e.Button == MouseButtons.Right)
        {
            string signatureDate = dataGridView3.CurrentRow.Cells[8].Value.ToString();
            // MessageBox.Show(signatureDate);
            if(signatureDate.Length > 5)
            {
                contextMenuStrip1.Items[0].Visible = false;
                contextMenuStrip1.Items[1].Visible = true;
            }else
            {
                contextMenuStrip1.Items[0].Visible = true;
                contextMenuStrip1.Items[1].Visible = false;
            }
        }

我的datagridview中有一個上下文條菜單。 我選擇它作為“行上下文條菜單”。

我想做的是獲取datagridview和控件簽名列的選定行是否為null。 如果它具有簽名日期,我想隱藏或取消隱藏“簽名”,如果它沒有簽名日期,則在上下文菜單欄上隱藏“取消簽名”項。

您可以在附上的圖片中看到。 上下文菜單條

編輯:事件的名稱是MouseDown。 編輯2:通過編輯此代碼,我可以獲取列數據並將其顯示在messageBox上。 但是我不能使用這些數據作為條件。 因此,它不起作用。 例如,當我選擇不包含“簽名日期”的行並將其顯示在messageBox上時,它就可以正常工作。 但是,當我使用簽名日期數據作為條件時,它不起作用。 我知道這太奇怪了並且太容易克服了,但是我不知道為什么我什么也沒抓住。

編輯3: 事件

編輯4(已解決):我創建了“上下文條菜單”,並且沒有指定任何一個作為Datagridview的“上下文條菜單”。

通過Datagridview_MouseDown事件,我正在獲取“簽名日期”列數據,並檢查其是否為null / empty。 如果它為null / empty,則將第一個“上下文菜單”條指定為Datagridview的“上下文條菜單”,否則不進行修改。 我以這種方式想出了解決方案:)

我認為您的問題是在上下文菜單條的情況下使用此菜單項看看是否有幫助。

if(e.Button == MouseButtons.Right)
        {
            string signatureDate = dataGridView3.CurrentRow.Cells[8].Value.ToString();
            // MessageBox.Show(signatureDate);
            if(signatureDate.Length > 5)
            {
                dataGridView3.ContextMenu.Items[0].Visible = false;
                dataGridView3.ContextMenu.Items[1].Visible = true;
            }else
            {
                dataGridView3.ContextMenu.Items[0].Visible = true;
                dataGridView3.ContextMenu.Items[1].Visible = false;
            }
        }

您的活動可能沒有觸發。 除了使用鼠標按下,您還可以使用contextMenuStrip的Opening事件

這應該可以解決您的問題

private void Form1_Load(object sender, EventArgs e)
        {
            dataGridView3.ContextMenu = contextMenuStrip1;
            contextMenuStrip1.Opening += contextMenuStrip1_Opening;
        }


private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
        {
            string signatureDate = dataGridView3.CurrentRow.Cells[8].Value.ToString();
            // MessageBox.Show(signatureDate);
            if (signatureDate.Length > 5)
            {
                contextMenuStrip1.Items[0].Visible = false;
                contextMenuStrip1.Items[1].Visible = true;
            }
            else
            {
                contextMenuStrip1.Items[0].Visible = true;
                contextMenuStrip1.Items[1].Visible = false;
            }
        }

暫無
暫無

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

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