簡體   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