برای انجامش مجبور شدم این کارو انجام بدم
هرچند هنوزم با حلقه موافق نیستم
مینویسم تا بقیه هم استفاده کنن
اول این متد رو اضافه کردم
private IEnumerable<ToolStripItem> GetItems(ToolStripItem item)
{
if (item is ToolStripMenuItem)
{
foreach (ToolStripItem tsi in (item as ToolStripMenuItem).DropDownItems)
{
if (tsi is ToolStripMenuItem)
{
if ((tsi as ToolStripMenuItem).HasDropDownItems)
{
foreach (ToolStripItem subItem in GetItems((tsi as ToolStripMenuItem)))
yield return subItem;
}
yield return (tsi as ToolStripMenuItem);
}
else if (tsi is ToolStripSeparator)
{
yield return (tsi as ToolStripSeparator);
}
}
}
else if (item is ToolStripSeparator)
{
yield return (item as ToolStripSeparator);
}
}
بعد تو لود فرمم
اینو نوشتم
//این یه کلاسه که خودم نوشتم وشما باید به هر روشی که میدونید لیست منوهای که نباید دسترسی داشته باشن رو بیرون بکشید
Connection.connect("SELECT_NOT_DASRESI", public_variabel.par = new string[] { "@_username" }, public_variabel.obj = new object[] { Parametr_pas.get_username() }, 1, true, false);
List<ToolStripItem> allItems = new List<ToolStripItem>();
foreach (ToolStripItem toolItem in menuStrip1.Items)
{
allItems.Add(toolItem);
//add sub items
allItems.AddRange(GetItems(toolItem));
}
foreach (DataRow row in Connection.DataSet().Tables[0].Rows)
foreach (ToolStripItem toolItem in allItems)
{
if (toolItem.Name == row[0].ToString())
toolItem.Enabled = false;
}
اما اگه کسی از دوستان میتونه کمک کنه از همون روش که اول گفتم این کار انجام بشه خیلی خیلی بهتره
foreach (DataRow row in Connection.DataSet().Tables[0].Rows)
{
((Control)row[0].ToString()).Enabled = false;
}
یعنی تکست رو تبدیل به نام ایتم کنیم