Creación de menús desde código
Creación de menús desde código
Si analizamos el código generado por el diseñador del formulario, observaremos que es relativamente fácil la construcción por código de la estructura de menús de un formulario, o la inserción de nuevas opciones de menú al menú principal ya existente.
Centrándonos en esta última situación, añadiremos dos nuevos controles Button al formulario, btnCrear y btnEliminar. En el primero escribiremos el código para crear una nueva opción en la barra
de menús, con algunas opciones desplegables que partan de él; asociando también a estas opciones, los manipuladores de evento necesarios.
En el último botón eliminaremos este menú creado en tiempo de ejecución. El Código fuente 483 muestra las instrucciones necesarias para ejecutar estos procesos.
' al comienzo de la clase ' declaramos las variables que contendrán ' los tipos MenuItem creados en ejecución Public Class Form1
Inherits System.Windows.Forms.Form
' declaración de las variables que contendrán ' los tipos MenuItem creados en ejecución Private mnuContabilidad As MenuItem Private WithEvents mnuApuntes As MenuItem Private mnuBalances As MenuItem '.... '....
End Class
'*************** Private Sub btnCrear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCrear.Click
' crear opciones de menú en tiempo de ejecución ' y añadirlas al menú del formulario
' opción de barra de menús Me.mnuContabilidad = New MenuItem() Me.mnuContabilidad.Text = "&Contabilidad"
' opciones a desplegar del menú Contabilidad Me.mnuApuntes = New MenuItem() Me.mnuApuntes.Text = "&Apuntes" Me.mnuApuntes.Checked = True Me.mnuApuntes.RadioCheck = True
Me.mnuBalances = New MenuItem() Me.mnuBalances.Text = "&Balances" Me.mnuBalances.DefaultItem = True AddHandler mnuBalances.Click, AddressOf OpcionBalances
' añadir al menú Contabilidad sus opciones Me.mnuContabilidad.MenuItems.AddRange(New MenuItem() {Me.mnuApuntes,
Me.mnuBalances})
' añadir al menú del formulario la opción de la barra Me.Menu.MenuItems.AddRange(New MenuItem() {Me.mnuContabilidad})
End Sub
'*************** ' este procedimiento se lanzará al seleccionar ' la opción de menú Apuntes
© Grupo EIDOS 31. Menús
Private Sub OpcionApuntes(ByVal sender As Object, ByVal e As EventArgs) Handles mnuApuntes.Click
MessageBox.Show("Opción Apuntes del menú")
End Sub
'*************** ' este procedimiento se lanzará al seleccionar ' la opción de menú Balances Private Sub OpcionBalances(ByVal sender As Object, ByVal e As EventArgs)
MessageBox.Show("Se ha seleccionado la opción Balances")
End Sub
'*************** ' al pulsar este botón, eliminamos el menú Contabilidad ' del menú principal del formulario Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminar.Click
Dim oMenuItem As MenuItem
' recorrer la colección de menús del formulario For Each oMenuItem In Me.Menu.MenuItems
' buscar por el nombre de menú If oMenuItem.Text.IndexOf("Contabilidad") > 0 Then
' si lo encontramos, quitarlo Me.Menu.MenuItems.Remove(oMenuItem)
End If Next
End Sub
Código fuente 483
En la Figura 282 se visualiza este formulario al ser ejecutado, incluyendo el nuevo menú creado por código.
Figura 282. Formulario con menú creado desde código.
Programación con Visual Basic .NET © Grupo EIDOS
Aunque en este ejemplo hemos añadido opciones en tiempo de ejecución a un menú de formulario ya existente, podemos partir de un formulario sin menú, y crear todas las opciones partiendo de cero, asignando el menú construido por código a la propiedad Menu de nuestro objeto formulario.
Programación con hebras
Parts
» Visual branding biro perjalanan alam (1)
» El manifiesto del ensamblado
» Instalación de Visual Studio .NET
» Grabando texto en un fichero
» Principales elementos en nuestro entorno de trabajo
» Manejo de ventanas adicionales del IDE
» Conceptos mínimos sobre depuración
» Comparación de cadenas en base a un patrón. El operador Like
» Uso de paréntesis para mejorar la legibilidad de expresiones
» Sintaxis de un procedimiento Function
» Sobrecarga de procedimientos
» Abordando un problema mediante programación procedural
» Creación de propiedades para la clase
» Encapsulación a través de propiedades
» Creación de métodos para la clase
» Sobrecarga de métodos o polimorfismo, en una misma clase
» Espacios de nombres (namespaces)
» Acceso a espacios de nombre de otros ensamblados
» Herencia y sobre-escritura de métodos
» Diferencias entre sobrecarga y sobre-escritura en base al tipo de enlace
» Ocultamiento de miembros de una clase
» Comportamiento de las palabras clave Me, MyClass y MyBase ante la sobre-escritura de métodos
» Herencia y métodos constructores
» Clases abstractas o no instanciables
» Comprobación del tipo de un objeto y moldeado (casting)
» Destrucción de objetos y recolección de basura
» Creación y manipulación de estructuras
» Estructuras o clases, ¿cuál debemos utilizar?
» Manipulación de cadenas con la clase String
» Optimizando la manipulación de cadenas con la clase StringBuilder
» Extender las funcionalidades de una clase a través de delegados
» La clase EventArgs, o cómo obtener información del objeto emisor del evento
» Obtención de subarrays a partir de un objeto ArrayList
» Manejo básico de colecciones Hashtable
» Operaciones varias con colecciones Hashtable
» Manipulación de valores en una colección Queue
» Implementando un interfaz para crear una nueva colección
» Manipulación estructurada de errores
» La influencia del orden de los manipuladores de excepciones
» Creación de excepciones personalizadas
» Manipulación de archivos mediante File y FileInfo
» Manipulación de archivos mediante Directory y DirectoryInfo
» Monitorización del sistema de archivos con FileSystemWatcher
» Creación de un formulario básico
» Iniciar el formulario desde Main( )
» Codificación de los eventos de controles
» Selección de texto en un TextBox
» Compartiendo código entre controles
» Crear una clase derivada de un control
» Agregar un proyecto con un formulario derivado
» Crear un formulario heredado desde un proyecto independiente
» Creación de menús desde código
» Detectando el estado de finalización
» Crear un proceso de monitorización
» Comportamiento Modal de formularios
» Formularios dependientes y fijos en primer plano
» Dibujo con las clases Graphics y Pen
» Manipulación de los eventos de pintado en la clase Form
» Manipulando el grado de opacidad del formulario
» Integrando elementos. Un visualizador de gráficos
» Comparativa de ADO /ADO .NET
» Arquitectura de datos desconectados
» Una visión general de ADO .NET
» Espacios de nombres y clases en ADO .NET
» Empleo de Data Binding simple para navegar y editar datos
» Configurar por código las propiedades del DataGrid
Show more