如何遍历toolStrip1控件上的所有项目 如何遍历toolStrip1控件上的所有项目,并将设置其Enabled = false;但是遇到ToolStripSeparator项就会报错,该如何处理? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 既然你知道是ToolStripSeparator,那就判断一下,对其做特殊处理 现在的问题是:toolStrip1控件嵌套了很多项,各种都有,判断ToolStripSeparator后遍历又成问题了.弄了一晚上也没有搞定,郁闷. xxx.Enabled = false;改成if(xxx is ToolStripSeparator) continue;xxx.Enabled = false; public static class myToolStrip { public static void SetEnabled(ToolStrip myToolStrip) { for (int i = 0; i < myToolStrip.Items.Count; i++) { // //先控制第一级控件,并且ToolStripLabel, ToolStripButton, ToolStripTextBox ,ToolStripComboBox,ToolStripProgressBar 无级联菜单 // myToolStrip.Items[i].Enabled = false; // // ToolStripMenuItem, ToolStripSplitButton ,ToolStripDropDownButton 有级联菜单 // TraverseItems(myToolStrip.Items[i]); } } private static void TraverseItems(ToolStripItem myItems) { if (!(myItems is ToolStripSeparator)) { myItems.Enabled = false; if (myItems is ToolStripMenuItem) { ToolStripMenuItem myMenuItem = (ToolStripMenuItem)myItems; if (myMenuItem.DropDownItems.Count > 0) { for (int i = 0; i < myMenuItem.DropDownItems.Count; i++) { myItems.Enabled = false; TraverseItems(myMenuItem.DropDownItems[i]); } } } // if (myItems is ToolStripSplitButton) { ToolStripSplitButton mySplitButton = (ToolStripSplitButton)myItems; if (mySplitButton.DropDownItems.Count > 0) { for (int i = 0; i < mySplitButton.DropDownItems.Count; i++) { myItems.Enabled = false; TraverseItems(mySplitButton.DropDownItems[i]); } } } // if (myItems is ToolStripDropDownButton) { ToolStripDropDownButton myDropDownButton = (ToolStripDropDownButton)myItems; if (myDropDownButton.DropDownItems.Count > 0) { for (int i = 0; i < myDropDownButton.DropDownItems.Count; i++) { myItems.Enabled = false; TraverseItems(myDropDownButton.DropDownItems[i]); } } } } }}我是这样写的,可是还是有问题,请大家帮我看一看. #region 遍历设置ToolStrip控件 public static class myToolStrip { public static void SetEnabled(ToolStrip myToolStrip) { for (int i = 0; i < myToolStrip.Items.Count; i++) { // //先控制第一级控件,并且ToolStripLabel, ToolStripButton, ToolStripTextBox ,ToolStripComboBox,ToolStripProgressBar 无级联菜单 // myToolStrip.Items[i].Enabled = false; // // ToolStripMenuItem, ToolStripSplitButton ,ToolStripDropDownButton 有级联菜单 // TraverseItems(myToolStrip.Items[i]); } } private static void TraverseItems(ToolStripItem myItems) { if (!(myItems is ToolStripSeparator)) { myItems.Enabled = false; // if (myItems is ToolStripMenuItem) { ToolStripMenuItem myMenuItem = (ToolStripMenuItem)myItems; for (int i = 0; i < myMenuItem.DropDownItems.Count; i++) { myMenuItem.DropDownItems[i].Enabled = false; TraverseItems(myMenuItem.DropDownItems[i]); } } // if (myItems is ToolStripSplitButton) { ToolStripSplitButton mySplitButton = (ToolStripSplitButton)myItems; for (int i = 0; i < mySplitButton.DropDownItems.Count; i++) { mySplitButton.DropDownItems[i].Enabled = false; TraverseItems(mySplitButton.DropDownItems[i]); } } // if (myItems is ToolStripDropDownButton) { ToolStripDropDownButton myDropDownButton = (ToolStripDropDownButton)myItems; for (int i = 0; i < myDropDownButton.DropDownItems.Count; i++) { myDropDownButton.DropDownItems[i].Enabled = false; TraverseItems(myDropDownButton.DropDownItems[i]); } } } } } #endregion这样改感觉可以了.想简化一下代码. 使用WebService能实现跨域登录么? 获取别人程序里的DATAGRID数据 获取url文件名 编一个程序来分析其他程序的性能 WinForm中隐藏Datagrid中的一列,有简单的方法吗? datagrid 读取XML文件问题 (高分求解) 窗体自动适应分辨率,控件自动适应窗体 如何用C#+SQL语句建一个数据库 利用C# 读取系统当前进程的出现问题,帮忙!! 如何制作类似menu显示效果的ComboBox 应用程序域的应用
continue;
xxx.Enabled = false;
{
public static void SetEnabled(ToolStrip myToolStrip)
{
for (int i = 0; i < myToolStrip.Items.Count; i++)
{
//
//先控制第一级控件,并且ToolStripLabel, ToolStripButton, ToolStripTextBox ,ToolStripComboBox,ToolStripProgressBar 无级联菜单
//
myToolStrip.Items[i].Enabled = false;
//
// ToolStripMenuItem, ToolStripSplitButton ,ToolStripDropDownButton 有级联菜单
//
TraverseItems(myToolStrip.Items[i]);
}
} private static void TraverseItems(ToolStripItem myItems)
{
if (!(myItems is ToolStripSeparator))
{
myItems.Enabled = false;
if (myItems is ToolStripMenuItem)
{
ToolStripMenuItem myMenuItem = (ToolStripMenuItem)myItems;
if (myMenuItem.DropDownItems.Count > 0)
{
for (int i = 0; i < myMenuItem.DropDownItems.Count; i++)
{
myItems.Enabled = false;
TraverseItems(myMenuItem.DropDownItems[i]);
}
}
}
//
if (myItems is ToolStripSplitButton)
{
ToolStripSplitButton mySplitButton = (ToolStripSplitButton)myItems;
if (mySplitButton.DropDownItems.Count > 0)
{
for (int i = 0; i < mySplitButton.DropDownItems.Count; i++)
{
myItems.Enabled = false;
TraverseItems(mySplitButton.DropDownItems[i]);
}
}
}
//
if (myItems is ToolStripDropDownButton)
{
ToolStripDropDownButton myDropDownButton = (ToolStripDropDownButton)myItems;
if (myDropDownButton.DropDownItems.Count > 0)
{
for (int i = 0; i < myDropDownButton.DropDownItems.Count; i++)
{
myItems.Enabled = false;
TraverseItems(myDropDownButton.DropDownItems[i]);
}
}
}
} }
}我是这样写的,可是还是有问题,请大家帮我看一看.
public static class myToolStrip
{
public static void SetEnabled(ToolStrip myToolStrip)
{
for (int i = 0; i < myToolStrip.Items.Count; i++)
{
//
//先控制第一级控件,并且ToolStripLabel, ToolStripButton, ToolStripTextBox ,ToolStripComboBox,ToolStripProgressBar 无级联菜单
//
myToolStrip.Items[i].Enabled = false;
//
// ToolStripMenuItem, ToolStripSplitButton ,ToolStripDropDownButton 有级联菜单
//
TraverseItems(myToolStrip.Items[i]);
}
} private static void TraverseItems(ToolStripItem myItems)
{
if (!(myItems is ToolStripSeparator))
{
myItems.Enabled = false;
//
if (myItems is ToolStripMenuItem)
{
ToolStripMenuItem myMenuItem = (ToolStripMenuItem)myItems;
for (int i = 0; i < myMenuItem.DropDownItems.Count; i++)
{
myMenuItem.DropDownItems[i].Enabled = false;
TraverseItems(myMenuItem.DropDownItems[i]);
}
}
//
if (myItems is ToolStripSplitButton)
{
ToolStripSplitButton mySplitButton = (ToolStripSplitButton)myItems;
for (int i = 0; i < mySplitButton.DropDownItems.Count; i++)
{
mySplitButton.DropDownItems[i].Enabled = false;
TraverseItems(mySplitButton.DropDownItems[i]);
}
}
//
if (myItems is ToolStripDropDownButton)
{
ToolStripDropDownButton myDropDownButton = (ToolStripDropDownButton)myItems;
for (int i = 0; i < myDropDownButton.DropDownItems.Count; i++)
{
myDropDownButton.DropDownItems[i].Enabled = false;
TraverseItems(myDropDownButton.DropDownItems[i]);
}
}
}
}
}
#endregion
这样改感觉可以了.想简化一下代码.