دسترسی به آیتم های ContextMenuStrip
سلام
من تو فرمم چند تا باتم دارم که براشون contextmenustrip تعریف کردم
می تونم به هر کدوم ار منوها به وسیله باتمی که منو به اون اضافه شده دسترسی داشته باشم
و اون منو رو با تمام زیر منوها غیر فعال کنم
ولی اگر بخوام به تک تک زیر منوها دسترسی داشته باشم چکار باید بکنم
به جای اون دو خط قرمز چه کدی باید بزارم ?
void inactive_all_sub_menu()
{
foreach (Control cms in this.Controls)
{
if (cms.GetType() == typeof(Button))
{
if (cms.Name.ToString() == "button1")
foreach(ContextMenuStrip.Items c2 in cms.ContextMenuStrip )
cms.ContextMenuStrip.Items[c2].Enabled = false;
}
}
}
با تشکر
نقل قول: دسترسی به آیتم های ContextMenuStrip
با کمک این تابع بازگشتی پیاده سازیش کردم :
private void button1_Click(object sender, EventArgs e)
{
do_Enable_Menues(button1.ContextMenuStrip.Items, false);
}
private void do_Enable_Menues(ToolStripItemCollection pMenues, bool pEnable)
{
foreach (ToolStripMenuItem subMenu in pMenues)
{
MessageBox.Show(subMenu.Text);
//or everything u like :
//subMenu.Enabled = pEnable;
if (subMenu.HasDropDownItems)
{
do_Enable_Menues(subMenu.DropDownItems, pEnable);
}
}
}
نقل قول: دسترسی به آیتم های ContextMenuStrip
سلام
RED-C0DE جان تشکر
برای ToolStripSeparator به مورد بر می خوره داخل پرانتز foreach
برای اون چه باید کرد؟؟
با تشکر
نقل قول: دسترسی به آیتم های ContextMenuStrip
حواسم به این نبود...
به اینصورت تغییرش بده :
foreach (ToolStripItem item in pMenues)
{
if (item is ToolStripMenuItem)
{
ToolStripMenuItem mnu = item as ToolStripMenuItem;
MessageBox.Show(mnu.Text);
//or everything u like :
//subMenu.Enabled = pEnable;
if (mnu.HasDropDownItems)
{
do_Enable_Menues(mnu.DropDownItems, pEnable);
}
}
}
فکر کنم مشخص باشه ولی :
توی مجموعه آیتمهای موجود در منو حرکت می کنه و اگر که آیتم موجود یک منو (ToolStripMenuItem) باشه ، کاری که می خوای رو انجام می ده...
نقل قول: دسترسی به آیتم های ContextMenuStrip
سلام
تشکر
با استفاده از کد شما مورد حل شد
اما سوال دیگه ای
اگر منو دارای زیر منویی باشه و اون زیر منو هم خود منو دیگه ای باشد و همینطور الی آخر...
چطور میشه تنها آخرین زیر منو (مثل برگها در درخت) رو غیر فعال کرد ؟
با تشکر
نقل قول: دسترسی به آیتم های ContextMenuStrip
اگه HasDropDownItems= false باشه یعنی این منو ، هیچ زیر آیتمی (در اینجا هیچ زیر منویی) نداره و یعنی (مثلا) برگ حساب می شه...