
Hola a a todos, voy programando en c# y me encontre con un problema que seguramente les esta pasando, como recorro un menustrip desde un child al mdi parent, esto funciona cuando queremos utilizar un mdi chil para controlar al MdiParent.
Los pasos que sigue el codigo son los siguientes:
1.- Habilita el MenuStrip
2.- Recorre el menu strip recursivamente
3.- durante el recorrido verifica si existe la opcion y la anula.(esto sirve para definir permisos a usuarios.)
Ahora vamos a ver el codigo
ojo que todos las funciones y elementos debes de ser PUBLICOS en el MdiParent.Designer.cs
public void button1_Click(object sender, EventArgs e)
{
//aqui habilitamos el MenuStrip
this.MdiParent.Controls["MenuStrip"].Enabled = true;
foreach (ToolStripMenuItem mnuitOpcion in this.MdiParent.MainMenuStrip.Items)
{
// si esta opción despliega un submenú
// llamar a un método para hacer cambios
// en las opciones del submenú
if (mnuitOpcion.DropDownItems.Count > 0)
{
this.CambiarOpcionesMenu(mnuitOpcion.DropDownItems);
}
}
//cerramos el formulario hijo el child.(en caso que sea un form de inicio de sesion.)
Close();
}
else
{
MessageBox.Show("Su nombre de usuario o contraseña no existe.","Inicio de Sesion");
}
}
public void CambiarOpcionesMenu(ToolStripItemCollection colOpcionesMenu)
{
// recorrer el submenú
foreach (ToolStripItem itmOpcion in colOpcionesMenu)
{
// restaurar el tipo de letra original
// si es una opción de menú normal...
if (itmOpcion.GetType() == typeof(ToolStripMenuItem))
{
// OJO que hay que colocar el texto que contiene el elemento ej. Imprimir
if (itmOpcion.Text=="Imprimir")
{
//Aqui lo deshabilitamos
((ToolStripMenuItem)itmOpcion).Enabled = false;
}
// si esta opción a su vez despliega un nuevo submenú
// llamar recursivamente a este método para cambiar sus opciones
if (((ToolStripMenuItem)itmOpcion).DropDownItems.Count > 0)
{
this.CambiarOpcionesMenu(((ToolStripMenuItem)itmOpcion).DropDownItems);
}
}
}
}
Espero que les ayude en algo, en todo caso si ven errores por favor comentar el articulo.
Gracias y saludos,
Moises
3 comentarios:
GRACIAS; me ha servido de MUCHO
Saludos desde Honduras.
Buscaba algo que me descarte los separadores y esto me sirvió, Muchas gracias.
Muchas pero muchas gracias amigo me ha servido de mucho
Publicar un comentario