نمایش نتایج 1 تا 6 از 6

نام تاپیک: دسترسی به آیتم های ContextMenuStrip

  1. #1
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    دیار کریمان
    پست
    1,008

    دسترسی به آیتم های 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;


    }
    }

    }
    با تشکر
    آخرین ویرایش به وسیله Sal_64 : یک شنبه 24 آذر 1387 در 00:37 صبح

  2. #2
    کاربر دائمی آواتار RED-C0DE
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    31 4E 20 20 54 48 33 20 20 28 72 59 70 54 30 47 33 4E 31 28 20 20 5C 2F 30 52 31 7C 7C 29 20 20 7C 2
    پست
    551

    نقل قول: دسترسی به آیتم های 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);
    }

    }
    }


  3. #3
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    دیار کریمان
    پست
    1,008

    نقل قول: دسترسی به آیتم های ContextMenuStrip

    سلام

    RED-C0DE جان تشکر

    برای ToolStripSeparator به مورد بر می خوره داخل پرانتز foreach
    برای اون چه باید کرد؟؟

    با تشکر

  4. #4
    کاربر دائمی آواتار RED-C0DE
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    31 4E 20 20 54 48 33 20 20 28 72 59 70 54 30 47 33 4E 31 28 20 20 5C 2F 30 52 31 7C 7C 29 20 20 7C 2
    پست
    551

    نقل قول: دسترسی به آیتم های 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) باشه ، کاری که می خوای رو انجام می ده...

  5. #5
    کاربر دائمی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    دیار کریمان
    پست
    1,008

    نقل قول: دسترسی به آیتم های ContextMenuStrip

    سلام

    تشکر
    با استفاده از کد شما مورد حل شد

    اما سوال دیگه ای

    اگر منو دارای زیر منویی باشه و اون زیر منو هم خود منو دیگه ای باشد و همینطور الی آخر...
    چطور میشه تنها آخرین زیر منو (مثل برگها در درخت) رو غیر فعال کرد ؟

    با تشکر

  6. #6
    کاربر دائمی آواتار RED-C0DE
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    31 4E 20 20 54 48 33 20 20 28 72 59 70 54 30 47 33 4E 31 28 20 20 5C 2F 30 52 31 7C 7C 29 20 20 7C 2
    پست
    551

    نقل قول: دسترسی به آیتم های ContextMenuStrip

    اگه HasDropDownItems= false باشه یعنی این منو ، هیچ زیر آیتمی (در اینجا هیچ زیر منویی) نداره و یعنی (مثلا) برگ حساب می شه...

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •