隐藏和取消隐藏上下文条菜单项c#

问题描述 投票:0回答:3
        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 和控件签名列的选定行是否为空。如果它有签名日期,我想隐藏或取消隐藏“签名”,如果它没有签名日期,则隐藏上下文菜单条上的“取消签名”项。

您可以在我附上的图片中看到。Context menu Strip

编辑:事件的名称是 MouseDown。 编辑2:通过编辑此代码,我可以获取列数据并将其显示在消息框上。但我不能用那些数据作为条件。因此它不起作用。例如,当我选择没有“签名日期”的行并将其显示在消息框上时,它正在工作。但是当我使用签名日期数据作为条件时它不起作用。我知道这很奇怪,而且太容易克服,但我不能因此而没有抓住任何东西。

编辑3:Event

编辑4(已解决):我创建了上下文条菜单并没有指定其中任何一个 作为 Datagridview 的上下文条菜单。

通过 Datagridview_MouseDown 事件,我正在获取签名日期列数据并检查它是否为空/空。如果它为空/空,我将第一个上下文菜单条指定为 Datagridview 的上下文条菜单,否则我会进行修改。我通过这种方式找到了解决方案:)

c# datagridview contextmenu
3个回答
2
投票

我认为你的问题出在上下文菜单条的实例中,使用这个看看是否有帮助。

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;
            }
        }

0
投票

您的活动可能没有触发。 除了使用鼠标按下之外,您还可以使用 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;
            }
        }

0
投票

要将

ToolStripMenuItem
隐藏在
ContextMenuStrip
中,请将其
Available
属性设置为
false
(而不是其
Visible
属性)。

© www.soinside.com 2019 - 2024. All rights reserved.