在C#中启用和禁用ToolStripMenu条目?

时间:2013-03-18 09:22:09

标签: c# arrays foreach toolstripmenu

我的Form包含Menu,其中包含两个条目,即菜单工具。两个Menues有一些SubMenus

现在我有TextBox名为txtSelectButton名为btnVisible,如果我在TextBox输入1,2 {{1} 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); } } Click事件中使用foreach循环并尝试使用以下内容,但结果与上面的代码不同。

Button

1 个答案:

答案 0 :(得分: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;
    }
}