.net - studio - Barras de menú estándar de Windows en Windows Forms
cuadro de herramientas de visual basic 2015 y sus funciones (4)
En lugar de utilizar un componente MainMenu
, puede crear su propio renderizador para el componente MenuStrip
. La ventaja aquí es poder agregar imágenes a los objetos MenuStripItem
. Aquí está el pastebin para el renderizador personalizado:
Hay diferentes temas que se pueden aplicar en el constructor del renderizador. Pruébalos todos para ver los temas nativos. Para usar este renderizador, simplemente configure la instancia en la propiedad MenuStrip
:
menuStrip.Renderer = new NativeRenderer([theme]);
Noté que agregar un MenuStrip
(desde la Caja de Herramientas) al diseño de mi formulario no da como resultado una barra de menú como la que se ve en muchas aplicaciones nativas de Windows. En cambio, obtengo una barra de menú como la de Visual Studio. Ninguna de las configuraciones de estilo para MenuStrip
parece imitar la barra de menú nativa mucho más común.
¿Hay alguna manera de agregar una barra de menú a mi aplicación Windows Forms que se ve igual a la que ve en el Bloc de notas, el Administrador de tareas y otros? (Preferiblemente con el diseñador, pero tampoco me importaría agregarlo programáticamente).
Captura de pantalla para la ilustración:
Esto es facil.
Vaya a su Caja de herramientas, haga clic derecho en cualquier lugar dentro y seleccione "Elegir elementos". Cuando el diálogo se carga y aparece, desplácese hacia abajo hasta que vea MainMenu. ¡Añádelo a la caja de herramientas y obtendrá una Barra de menús nativa!
Feliz codificación!
Normalmente configuro el RenderMode
de MenuStrip en System
que da un menú minimalista de un solo color (sin gradientes ni nada decadente como ese).
Si eso no va lo suficientemente lejos, es probable que deba pasar por algunos niveles bajos para obtener lo que desea.
Puede hacer esto configurando la propiedad del Menu
su formulario, como esta:
private void Form1_Load(object sender, EventArgs e)
{
this.Menu = new MainMenu();
MenuItem item = new MenuItem("File");
this.Menu.MenuItems.Add(item);
item.MenuItems.Add("Save", new EventHandler(Save_Click));
item.MenuItems.Add("Open", new EventHandler(Open_Click));
item = new MenuItem("Edit");
this.Menu.MenuItems.Add(item);
item.MenuItems.Add("Copy", new EventHandler(Copy_Click));
item.MenuItems.Add("Paste", new EventHandler(Paste_Click));
// etc ...
}
private void Save_Click(object sender, EventArgs e)
{
// save
}
Estos menús se verán como menús del sistema "normal".
Sin embargo, no pude encontrar ningún soporte de diseñador para esto. En mi defensa, no lo intenté muy duro.