c#在contextmenustrip上设置条件

时间:2013-06-29 23:22:22

标签: c# winforms listview conditional-statements contextmenustrip

无论如何设置条件如:

当我打开文件时,它会在ListView上加载一些信息,第五个子项(索引计数应该是4)正在加载文本,如果是“ETDF”,则启用contextmenustrip中的项目,如果不是,则禁用它,我在contextmenustrip中尝试了这个,但它只给了我一个例外:

if (listView1.SelectedItems[4].ToString() != "ETDF")
        {
            editToolStripMenuItem.Enabled = false;
        }
        else if (listView1.SelectedItems[4].ToString() == "ETDF")
        {
            editToolStripMenuItem.Enabled = true;
        }
我做错了什么?

3 个答案:

答案 0 :(得分:1)

Opening事件中设置Enabled属性。

private void MyContextMenuStrip_Opening(object sender, CancelEventArgs e)
{
    editToolStripMenuItem.Enabled = (listView1.SelectedItems[4].ToString() == "ETDF");
}

答案 1 :(得分:1)

您是否收到了ArgumentOutOfRangeException。如果是,请检查计数。

        if (listView1.Items.Count >= 5)
        {
            if (listView1.SelectedItems[4].ToString() != "ETDF")
            {
                editToolStripMenuItem.Enabled = false;
            }
            else if (listView1.SelectedItems[4].ToString() == "ETDF")
            {
                editToolStripMenuItem.Enabled = true;
            }
        }

答案 2 :(得分:1)

if (listView1.SelectedItems[4].Text != "ETDF")
        {
            editToolStripMenuItem.Enabled = false;
        }
        else if (listView1.SelectedItems[4].Text == "ETDF")
        {
            editToolStripMenuItem.Enabled = true;
        }

这应该解决你的问题,错误是在调用tostring()时应该是文本