2013-03-18 3 views
0

У меня есть Form, который содержит Menu с двумя элементами, которые Меню и Инструменты. У двух Menues есть SubMenus.Включить и отключить записи ToolStripMenu в C#?

Теперь у меня есть TextBox называется txtSelect и Button называется btnVisible, если я вхожу в 1,2 TextBox, что SubMenu s в Menu не должен быть виден. Я написал следующий код, бит написан на жестком диске.

ToolStripMenuItem[] mstrip = new ToolStripMenuItem[] { msO1, msO2, msO3, msP1, msP2, msP3 }; 
if (txtSelect.Text.Length > 2) 
{ 
    string word = txtSelect.Text; 
    string[] splt = word.Split(','); 
    for (int x = 0; x < mstrip.Length; x++) 
     mstrip[x].Visible = true; 
    for (int x = 0; x < splt.Length; x++) 
    { 
     int y = Convert.ToInt32(splt[x].ToString()) - 1; 
     if (y >= 0 && y < mstrip.Length) 
      mstrip[y].Visible = false; 
     textBox1.AppendText(mstrip[y].Text); 
     textBox2.AppendText(mstrip[y].OwnerItem.Text); 
    } 
} 

Я хочу использовать foreach цикл вместо в Button Click Event и попытались с нижеследующим, однако результат не то же самое, как и приведенный выше код.

foreach (ToolStripMenuItem mnItem in msMenus.Items) 
{ 
    MessageBox.Show(mnItem.Text); 
    for (int i = 0; i < mnItem.DropDown.Items.Count; i++) 
    { 
     MessageBox.Show(mnItem.DropDown.Items[i].Text); 
     mnItem.DropDown.Items[i].Visible = true; 
    }  
} 
+0

Не могли бы вы прояснить этот вопрос? Что вам нужно? – stevepkr84

+0

Я хочу, чтобы над валидацией с петлей foreach .... я не хочу hardcode ..., –

ответ

0

Ну, может быть, вы хотите что-то вроде:

List<Int32> lstindex = new List<Int32>(); 
String[] splt = txtSelect.Text.Split(','); 

// initialize list of indexed for textbox 
foreach (String str in splt) 
{ 
    lstindex.Add(Convert.ToInt32(str) - 1); 
} 

// for each menu 
foreach (ToolStripMenuItem mnItem in msMenus.Items) 
{ 
    // for each menu item 
    foreach (ToolStripItem item in mnItem.DropDown.Items) 
    { 
     // if index of item is in the list of indexed, set visible to false, otherwise to true 
     item.Visible = lstindex.Contains(mnItem.DropDown.Items.IndexOf(item)) ? false : true; 
    } 
} 
+0

Я хочу, чтобы subItems всех меню были в последовательности ...., Как 1,2,3,4,5 , 6,7,8,9,10 ............, –