Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何查找名为的toolstripmenuItem_C#_Menustrip_Toolstripdropdown_Toolstripmenu - Fatal编程技术网

C# 如何查找名为的toolstripmenuItem

C# 如何查找名为的toolstripmenuItem,c#,menustrip,toolstripdropdown,toolstripmenu,C#,Menustrip,Toolstripdropdown,Toolstripmenu,我已将menuStrip1项的visible属性设置为false,如下所示 foreach (ToolStripMenuItem itm in menuStrip1.Items) { itm.Visible = false; } 现在我知道了toolStripMenuItem和menustrip1的dropDownItem的名称。如何激活所需的toolStripMenuItem和dropDownItem 我有 string mnItm = "SalesToolStripMenuItem

我已将menuStrip1项的visible属性设置为false,如下所示

foreach (ToolStripMenuItem itm in menuStrip1.Items)
{
    itm.Visible = false;
}
现在我知道了
toolStripMenuItem和menustrip1的dropDownItem的名称。如何激活所需的
toolStripMenuItem和dropDownItem

我有

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

现在我想为这两个(
toolStripMenuItem和dropDownItem
)项设置visible true。我该怎么做?我只知道这些名称。

如果我收到您的问题,您将尝试禁用除上述两个toolstrip项之外的其他项。因为您知道菜单项的名称,所以代码中的一点小小更改就可以让您顺利完成任务

  foreach (ToolStripMenuItem itm in menuStrip1.Items)
    {
       if(itm.Text !="SalesToolStripMenuItem" || itm.Text !="invoiceToolStripMenuItem")
        {
         itm.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
字符串。

只需使用这些名称,即可通过
MenuStrip获取实际的
项。项
索引器:

ToolStripMenuItem menuItem = menuStrip1.Items[mnItm] as ToolStripMenuItem;
ToolStripDropDownMenu ddItem = menuStrip1.Items[ddItm] as ToolStripDropDownMenu;
你在寻找方法

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

您可以使用

menuStrip1.Items[mnItm].Visible = true;
menuStrip1.Items[ddItm].Visible = true;
或者,如果要将多个toolstrip项设置为可见:

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

希望它对您的代码有帮助

在您的代码中,只有一个
strcontrolval
可以初始化为下一个。您必须重新分配againOP,如果他愿意,可以使用字符串数组。然后如何设置找到的项的可见性?您的答案不完整。@chocapisz
foreach(项目中的变量项目)item.Visible=true简洁明了!我喜欢这一行你刚刚帮我解决了一个我一直想解决的两天问题--需要添加“as ToolStripMenuItem”
    private void ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        string MenuItemName = sender.ToString()
    }
    private void ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        string MenuItemName = sender.ToString()
    }