Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/08/2011, 16:46
eldavan
 
Fecha de Ingreso: julio-2009
Mensajes: 28
Antigüedad: 14 años, 9 meses
Puntos: 0
foreach a elementos de un MenuStrip

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);
}
}