如何遍历/\d\D+(?=ANS)/gm
中的所有ToolStripMenuItem
MenuStrip
如果con.connection3.Open();
string query = "SELECT * FROM tblrole WHERE role = ?role";
using (MySqlCommand cmd3 = new MySqlCommand(query,con.connection3))
{
cmd3.Parameters.AddWithValue("?role", roled);
using (MySqlDataReader mdr = cmd3.ExecuteReader())
{
while (mdr.Read())
{
for (int o = 0, i = 2; o < fileMaintenanceToolStripMenuItem.DropDownItems.Count; o++, i++)
{
fileMaintenanceToolStripMenuItem.DropDownItems[o].Visible = mdr.GetBoolean(i);
}
for (int o = 0, i = 19; o < transactionToolStripMenuItem.DropDownItems.Count; o++, i++)
{
transactionToolStripMenuItem.DropDownItems[o].Visible = mdr.GetBoolean(i);
}
for (int o = 0, i = 45; o < reportsToolStripMenuItem.DropDownItems.Count; o++, i++)
{
reportsToolStripMenuItem.DropDownItems[o].Visible = mdr.GetBoolean(i);
}
for (int o = 0, i = 55; o < utilitiesToolStripMenuItem.DropDownItems.Count; o++, i++)
{
utilitiesToolStripMenuItem.DropDownItems[o].Visible = mdr.GetBoolean(i);
}
if (!fileMaintenanceToolStripMenuItem.HasDropDownItems)fileMaintenanceToolStripMenuItem.Visible = false;
else fileMaintenanceToolStripMenuItem.Visible = true;
if (!transactionToolStripMenuItem.HasDropDownItems)transactionToolStripMenuItem.Visible = false;
else transactionToolStripMenuItem.Visible = true;
if (!reportsToolStripMenuItem.HasDropDownItems)reportsToolStripMenuItem.Visible = false;
else reportsToolStripMenuItem.Visible = true;
if (!utilitiesToolStripMenuItem.HasDropDownItems) utilitiesToolStripMenuItem.Visible = false;
else utilitiesToolStripMenuItem.Visible = true;
}
}
}
con.connection3.Close();
没有子项,但我需要遍历它们,那么工作正常
答案 0 :(得分:1)
您可以使用递归方法作为遍历树结构的良好选项。您可以使用extension method列出给定ToolStripMenuItem
的{{1}}个后代:
ToolStripMenuItem
它会将using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
public static class ToolStripMenuItemExtensions
{
public static List<ToolStripMenuItem> Descendants(this ToolStripMenuItem item)
{
var items = item.DropDownItems.OfType<ToolStripMenuItem>().ToList();
return items.SelectMany(x => Descendants(x)).Concat(items).ToList();
}
}
添加到Descendants
元素,因此您可以这样使用它:
ToolStripMenuItem