Click here to Skip to main content
11,502,348 members (65,774 online)
Click here to Skip to main content

Iterating through Menu strip Items.

, 2 May 2012 CPOL 26.4K 251 8
Rate this:
Please Sign up or sign in to vote.
This is an old version of the currently published tip/trick.

Introduction 

Its quite difficult to set properties of Tool Strip Menu Items like if you want to disable curtain items or make then invisible. Simple why is to set then individually but if you want to iterate through all the items it's quite difficult this article explains how you can iterate through all ToolStripMenuItems of a menu strip. 

Background

Given code works on recursive method call.

Using the Code

// if we have a MenuStrip named ts.

   foreach (ToolStripMenuItem mainMenu in ts.Items)
            {
                if (mainMenu.Visible)
                {
                    // navigate through each submenu
                    SetToolStripItems(mainMenu.DropDownItems);
                }               
            }
        private void  SetToolStripItems(ToolStripItemCollection dropDownItems)
        {
            try
            {
                foreach (object obj in dropDownItems) //for each object because it could be toolstrip seperator as well.
                {
                    if (obj.GetType().ToString() == "System.Windows.Forms.ToolStripMenuItem") //if we get the desired object type.
                    {
                        ToolStripMenuItem subMenu = (ToolStripMenuItem)obj; // cast to ToolStripMenuItem

                        if (subMenu.HasDropDownItems) // if subMenu has childrens
                        {
                            SetToolStripItems(subMenu.DropDownItems); // Call recursive Method.
                        }
                        else // Do the desired operations here.
                        {
                            if (subMenu.Tag != null)
                            {
                                subMenu.Visible = AccountsGlobals.FormRights(Convert.ToInt32(subMenu.Tag)).CanAccess;
                                subMenu.Enabled  = AccountsGlobals.FormRights(Convert.ToInt32(subMenu.Tag)).CanAccess;
                            }
                        }                        
                    }
                }             
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "SetToolStripItems", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

Points of Interest

Recursive methods are quite use full when you don't know the depth of the loops.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Qadeer Ahmed Khan
Software Developer
Pakistan Pakistan
No Biography provided

Comments and Discussions


Discussions posted for the Published version of this article. Posting a message here will take you to the publicly available article in order to continue your conversation in public.
 
QuestionToolStripDropDownItem Pin
Jens-Madsen26-Oct-14 17:29
memberJens-Madsen26-Oct-14 17:29 
GeneralMy vote of 5 Pin
shanmugamvasu20-Oct-12 1:07
membershanmugamvasu20-Oct-12 1:07 
Questiontip Pin
MrDeej3-May-12 8:27
memberMrDeej3-May-12 8:27 
AnswerRe: tip Pin
qadeer ahmed khan3-May-12 19:22
memberqadeer ahmed khan3-May-12 19:22 
GeneralRe: tip Pin
Selvin3-May-12 23:41
memberSelvin3-May-12 23:41 
GeneralRe: tip Pin
John Brett4-May-12 0:11
memberJohn Brett4-May-12 0:11 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web03 | 2.8.150520.1 | Last Updated 2 May 2012
Article Copyright 2012 by Qadeer Ahmed Khan
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid