2013-09-24 2 views
0

Я дал видимое свойство моих menuStrip1 элементов в фальшива, какКак найти ToolStripMenuItem с именем

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

Теперь я знаю имена toolStripMenuItem and dropDownItem в menustrip1. Как я могу активировать необходимый toolStripMenuItem and dropDownItem.

У меня есть

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

Теперь я хочу, чтобы установить видимые верное эти двух (toolStripMenuItem and dropDownItem) элементы. Как я могу это сделать? Я знаю только эти имена.

ответ

1

Вы должны попробовать что-то вроде этого:

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

Initialize strControlVal строку по своему усмотрению, когда вам это нужно.

+0

В коде только один 'strcontrolval' может быть инициализирован для следующего повторного назначения. – Rohit

+0

OP может взять строковый массив, если захочет. – Sadique

+0

Этот поиск не нашел/нашел пункты меню ... –

1

Если у меня возникли вопросы, которые вы пытаетесь отключить, кроме указанных выше двух пунктов инструментальной панели. Так как вы знаете название пунктов меню небольшое изменение в коде вы можете получить по

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

Просто использовать эти имена, чтобы получить фактическую item через MenuStrip.Items индексатор:

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

Вы только что помогли мне решить проблему на 2 дня, я пытался обернуть голову - нужно было добавить «как ToolStripMenuItem» – JSWulf

4

Вы ищете ToolStripItemCollection.Find метод.

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

второй параметр указывает, следует ли искать детей.

+0

И как установить видимость от найденного товара (ов)? Ваш ответ неполный. – ChocapicSz

+1

@ChocapicSz 'foreach (элемент var в элементах) item.Visible = true;' –

3

Вы можете использовать

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

Надеется, что это помогает

+1

короткий и лаконичный! Мне нравится oneliner –

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