2

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

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

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

我有

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

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

4

6 回答 6

6

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

ToolStripMenuItem menuItem = menuStrip1.Items[mnItm] as ToolStripMenuItem;
ToolStripDropDownMenu ddItem = menuStrip1.Items[ddItm] as ToolStripDropDownMenu;
于 2013-09-24T06:31:51.757 回答
5

您正在寻找ToolStripItemCollection.Find方法。

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

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

于 2013-09-24T06:57:06.377 回答
5

您可以使用

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

希望能帮助到你

于 2013-09-24T07:00:47.787 回答
3

你应该尝试这样的事情:

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

strControlVal在您需要的地方自行决定初始化字符串。

于 2013-09-24T06:21:54.743 回答
1

如果我收到您的问题,您正在尝试禁用上述两个工具条项目之外的其他项目。由于您知道菜单项的名称,因此只需对代码稍作更改即可

  foreach (ToolStripMenuItem itm in menuStrip1.Items)
    {
       if(itm.Text !="SalesToolStripMenuItem" || itm.Text !="invoiceToolStripMenuItem")
        {
         itm.Visible = false;
        }
    }
于 2013-09-24T06:21:36.930 回答
0
    private void ToolStripMenuItem_Click(object sender, EventArgs e)
    {
        string MenuItemName = sender.ToString()
    }
于 2015-06-23T14:50:46.867 回答