Hola buenas tardes.
Tratare de explicar mi problema para que me puedan ayudar, 
de ante mano gracias.
Tengo un formulario en el cual tiene varios controles y entre ellos tien un MenuStrip, este MenuStrip tien ToolStripTextBox y ToolStripMenuItem, en detalle es que yo al cargar el formulario recorro los elementos del mismo. y cuando llego a un MenuStrip, llamo a una función para que recorra los controles que tiene ese MenuStrip. el problema es que si en los controles hay mas de uno o sea un (ToolStripTextBox y ToolStripMenuItem). se cuelga el programa. Quisiera que me ayuden como puedo preguntar que tipo de control es para asi hacerlo su respectivo foreach
 
 
 
------------------
public F_AdministraciondePermisos(Form f)
        {
            InitializeComponent();
 
//recibo los el formulario con sus controles
            ShowControls(f.Controls);
// llamo a la función enviando los controles
 
        }
 
 
    private void ShowControls(Control.ControlCollection controlCollection)
        {
            foreach (Control c in controlCollection)
            {
                if (c.Controls.Count > 0)  
                {         
                    ShowControls(c.Controls); 
                }
//aki pregunto si es MenuStrip
                if (c is MenuStrip)
                {
                    MenuStrip menuStrip = c as MenuStrip;
// y llamo a esta otra funcion para recorres los controles de este MenuStrip                    
ShowToolStipItems(menuStrip.Items);
 
                }
 
                if (c is Button || c is DataGridView)
                {
                    FAP_LisControles.Items.Add(c.Name);
 
                }
            }
        }   
 
 
 
 
 
 
 
 
 
private void ShowToolStipItems(ToolStripItemCollection toolStripItems)
 
        {
 
 
// mi problema esta aki “si ago priero esto choca con el otro lo ideal seria saber de k tipo es y asi hacerlo su for”
            foreach (ToolStripTextBox mi in toolStripItems)
            {
                MessageBox.Show("x");
            }
 
                foreach (ToolStripMenuItem mi in toolStripItems)
                {
                    oldMenuToolTips.Add(mi.Name, mi.ToolTipText);
                    mi.ToolTipText = mi.Name;
 
                    if (mi.DropDownItems.Count > 0)
                    {
                        ShowToolStipItems(mi.DropDownItems);
                    }
 
                    FAP_LisControles.Items.Add(mi.Name);
                }
        } 
  
 

