繁体   English   中英

如何找到具有名称的toolstripmenuItem

[英]How to find toolstripmenuItem with name

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

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

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

我有

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

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

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

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

您正在寻找ToolStripItemCollection.Find方法。

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

第二个参数表示是否搜索孩子。

您可以使用

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

希望能帮助到你

你应该尝试这样的事情:

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

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

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

  foreach (ToolStripMenuItem itm in menuStrip1.Items)
    {
       if(itm.Text !="SalesToolStripMenuItem" || itm.Text !="invoiceToolStripMenuItem")
        {
         itm.Visible = false;
        }
    }
    private void ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        string MenuItemName = sender.ToString()
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM