如何找到具有名称的toolstripmenuItem

时间:2013-09-24 06:16:07

标签: c# menustrip toolstripdropdown toolstripmenu

我已将menuStrip1项的可见属性设置为false

foreach (ToolStripMenuItem itm in menuStrip1.Items)
{
    itm.Visible = false;
}

现在我知道了menustrip1 toolStripMenuItem and dropDownItem的名字。如何激活所需的toolStripMenuItem and dropDownItem

我有

string mnItm = "SalesToolStripMenuItem";
string ddItm = "invoiceToolStripMenuItem";

现在我想将这两个(toolStripMenuItem and dropDownItem)项设置为true。我怎样才能做到这一点?我只知道那些名字。

6 个答案:

答案 0 :(得分:6)

只需使用这些名称即可通过item索引器获取实际的MenuStrip.Items

ToolStripMenuItem menuItem = menuStrip1.Items[mnItm] as ToolStripMenuItem;
ToolStripDropDownMenu ddItem = menuStrip1.Items[ddItm] as ToolStripDropDownMenu;

答案 1 :(得分:4)

您正在寻找ToolStripItemCollection.Find方法。

var items = menustrip.Items.Find("SalesToolStripMenuItem", true);
foreach(var item in items)
{
    item.Visible = false;
}

第二个参数表示是否搜索儿童。

答案 2 :(得分:3)

您可以使用

menuStrip1.Items[mnItm].Visible = true;
menuStrip1.Items[ddItm].Visible = true;

或者如果要将Visible设置为多个工具条项目:

string [] visibleItems = new [] {"SalesToolStripMenuItem", "invoiceToolStripMenuItem"};
foreach (ToolStripMenuItem item in menuStrip1.Items)
{
     if (visibleItems.Contains(item.Name))
     { 
        item.Visible = false;
     }
}

希望有所帮助

答案 3 :(得分:2)

你应该尝试这样的事情:

string strControlVal ="somecontrol"; //"SalesToolStripMenuItem" or "invoiceToolStripMenuItem" in your case
foreach (ToolStripMenuItem item in menuStrip1.Items)
{
     if (strControlVal == item.Name)
     { 
        item.Visible = false;
     }
}

根据您的需要自行决定初始化strControlVal字符串。

答案 4 :(得分:1)

如果我收到你的问题,你试图禁用除上述两个提到的工具条之外的其他项目。由于您知道菜单项的名称,因此代码中的细微更改可以帮助您了解

  foreach (ToolStripMenuItem itm in menuStrip1.Items)
    {
       if(itm.Text !="SalesToolStripMenuItem" || itm.Text !="invoiceToolStripMenuItem")
        {
         itm.Visible = false;
        }
    }

答案 5 :(得分:0)

    private void ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        string MenuItemName = sender.ToString()
    }