SlideShare una empresa de Scribd logo
1 de 11
A Toda Máquina Con Herencia
Visual .NET

Fecha: 03/Sep/2005 (31/08/05)
Autor: Lic. Giovanni Cuadra Reyes
AmericanCollege IT Manager

Email: giovanni_cuadra@hotmail.com
       gcuadra@americancollege.edu.ni




!!!Tecnología de la Programación!!!
Managua, Nicaragua.




Introducción

Cuando decidí escribir este artículo acerca de Herencia Visual .NET, estaba trabajando
una aplicación en la cual utilice gran parte herencia de formularios, y fue con el
propósito en dar a conocer una forma más practica en simplificar horas de trabajo en el
diseño de formularios y porque no decirlo en la escritura de código.

Si no me falla la memoria en la versión empresarial de Microsoft Visual Basic 6.0,
Microsoft presento en los complementos de esta herramienta una forma de reutilizar los
formularios a partir de diseños personalizados por el desarrollador o por plantillas que la
misma herramienta traía consigo. De tal forma que podíamos reutilizar formularios y
código sin afectar el original y los mismos podíamos convertirlos en plantillas de
diseño. Aunque este tipo de implementación esta muy lejos de ser el concepto de
Herencia Visual .NET, proporciono en su época los mecanismos para que esta misma
fuese implementada en versiones futuras de Visual Studio y totalmente mejorada hasta
llegar a lo que hoy en día conocemos como Herencia Visual de Formularios Windows.

Este artículo esta orientado a lo que es Herencia Visual .NET, como trabaja, como se
comportan los formularios heredados con respecto a los formularios bases, como se
comportan los métodos y/o eventos en su ejecución y en como estos elementos pueden
ejecutar código desde una clase base a una clase derivada.

Qué es la Herencia Visual de Formularios
La Herencia Visual de Formularios podría definirse como el duplicado de un formulario
a partir de otro, denominado original o formulario base o clase base, de otra forma
dicha, podría también ser definido como una clase derivada de formulario por una clase
base de formulario. El formulario base o clase base, seria de donde se deriva el
formulario heredado o clase heredada a la cual se le denomina clase derivada. Por lo
tanto el formulario base hereda sus características de la clase base
System.Windows.Forms.Form, mientras que el formulario derivado, sus características
son heredadas directamente del formulario base.

A continuación muestro un ejemplo de lo anteriormente expuesto:




                          La figura 1.0 Muestra la clase base.




                        La figura 2.0 Muestra la clase derivada.



Recordemos que los formularios en VB.NET no son mas que una clase que pueden
heredar un nuevo formulario a partir de técnicas estándares de herencia visual. Por lo
tanto unas de las funcionalidades de la herencia visual es por ejemplo que a partir de un
formulario base se puede representar un tamaño estandar de objetos, como lo son
botones, cajas de texto y otros controles contenido dentro del mismo. Por el cual
cualquier formulario derivado de esa base, tendrá las misma formas de controles y
tamaños y posición.

Herencia Visual en Microsoft Visual Basic .NET

Los diseñadores de formularios Windows soportan herencia de formularios. En el
diseñador, aparece un el menú de proyectos la opción herencia de formularios. Se
ejecuta esta opción y a continuación se visualiza una pantalla el cual solicita el nombre
del nuevo formulario heredado. A continuación muestro el menú para ejecutar la opción
:




      La figura 3.0 Muestra la opción que permite crear un formulario heredado.
La figura 4.0 Muestra las plantilla para herencia de formularios.



Todos los eventos manejados que se especifican en el formulario base, automáticamente
trabajan de la misma forma que en los formularios heredados. Por ejemplo, si un botón
en un formulario base especifica un evento manejado, dicha de otra forma esta
programado. En el formulario heredado los botones llaman a los eventos manejados de
la clase base. Por lo tanto, si se agrega un evento manejado en la clase heredada para un
componente en la clase base, ambos eventos son ejecutados, con la diferencia que el
evento de la clase base se dispara primero, seguido del evento manejado de la clase
heredada.

Otro comportamiento interesante es que los eventos manejados del formulario base
pueden sobrescribirse, sin embargo para poder cumplir esto, será necesario utilizar la
palabra reservada Overridable en la definición de los eventos manejados de la clase
base y entonces se crea un nuevo método en la clase heredada con la misma lista de
parámetros.

No se debe utilizar la palabra reservada Handles en los métodos sobrescritos en los
formularios heredados. Por lo tanto si se quiere llamar a eventos manejados de un
formulario base dentro de un método Overridden se requiere utilizar el objeto MyBase
para acceder al formulario base.

Hay que recordar también que la herencia de formularios no es una operación en línea.
Por ejemplo, si se actualiza el formulario base con el objetivo en reemplazar objetos, se
tendrá que ejecutar el depurador con el propósito de actualizar todos los formularios
heredados que provienen del formulario base modificado, dicho de otra forma,
recompilar la aplicación nuevamente. Tomando en cuenta que el formulario heredado
tiene que estar cerrado.

Por último, las propiedades de los formularios heredados pueden ser programados y
personalizados como las de cualquier otro formulario, todo es que la propiedad
Modifiers de los controles del formulario base sea cambiada a Protected la cual seria el
alcance que tendrían las propiedades del formulario base. Modifiers
predeterminadamente se encuentra como Friend el cual especifica que su alcance es
solo para la clase base.

Implementando una solución con Visual Basic .NET

A continuación muestro un ejemplo muy sencillo utilizando herencia visual de
formularios. Los siguientes requisitos serán necesarios:

               Microsoft Visual
                             Basic .NET 2003
               Microsoft SQL Server 2000
               Microsoft Windows XP o superior
               Computador Pentium o superior
               Memória RAM 128 o superior
               Monitor VGA de ‘’15 o superior

A continuación muestro el siguiente formulario el cual estará definido como el
formulario base de la aplicación, así como el código dentro del mismo:




Protected Const SQL_INFOCONNECTION As String = _
"Server=localhost;" & _

"DataBase=Northwind;" & _

"Integrated Security=SSPI"

Protected Connect As Boolean = False

Protected connectionString As String = SQL_INFOCONNECTION

Protected Function GetDataSource() As DataSet

Static ConnectionString As String = SQL_INFOCONNECTION

Static Connect As Boolean = False

'--Crear instancia al formulario del status de conexión.

Dim frmStatusMessage As New frmStatus

'--Primera vez que se conecta.

If Not Connect Then

'--Mensaje al usuario de intento de conexión.

frmStatusMessage.Show("Conectando con el servidor de datos...")

End If

'--Inicializar el intento de conexión para entrar al ciclo.

Dim IsConnecting As Boolean = True

While IsConnecting

Try

'--Inicializar conexión a la base de datos.

Dim cnNorthwind As New SqlConnection(ConnectionString)

'--Ejecutar adaptador con la tabla productos.

Dim da As New SqlDataAdapter( _

"SELECT ProductID, ProductName, UnitPrice, UnitsInStock " & _

"FROM products", cnNorthwind)

Dim dsProducts As New DataSet

'--Inicializar y llenar dataset.

dsProducts.Clear()
da.Fill(dsProducts, "Products")

IsConnecting = False

Connect = True

frmStatusMessage.Close()

'--Retornar conjunto de datos a su destino.

Return dsProducts

Catch exc As Exception

'--Cerrar formulario

frmStatusMessage.Close()

'--Enviar mensaje al usuario.

System.Windows.Forms.MessageBox.Show(exc.Message, "Herencia Visual .NET", _

MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)

End Try

End While

'--Cerrar formulario.

frmStatusMessage.Close()

End Function

Private Sub btnCerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnCerrar.Click

'--Cerrar el form y terminar la aplicación.

Me.Close()

End

End Sub

En el código anterior se crea una función que permite crear conexión con la base de
datos de SQL Server 2000 y la cual enviara el conjunto de datos a un control enlazado.
El clic del botón cerrar cierra cualquier formulario heredado, ya que primeramente se
ejecuta el método clic del formulario base y luego el método clic del formulario
heredado.

A continuación se muestra el formulario heredado en tiempo de diseño, así como su
código :
'--Inicializar grid y crear estilos.

With Me.grdProductos

.CaptionText = "Lista de productos desglosada"

.DataSource = GetDataSource().Tables(0)

End With

'--Aplicar estilos al grid.

Dim dgTableStyle1 As New DataGridTableStyle

With dgTableStyle1

.AlternatingBackColor = Color.Red

.BackColor = Color.WhiteSmoke

.ForeColor = Color.MidnightBlue

.GridLineColor = Color.Gainsboro

.GridLineStyle = System.Windows.Forms.DataGridLineStyle.None

.HeaderBackColor = Color.MidnightBlue

.HeaderFont = New Font("Tahoma", 8.0!, FontStyle.Bold)
.HeaderForeColor = Color.WhiteSmoke

.LinkColor = Color.Teal

.MappingName = "Products"

.SelectionBackColor = Color.CadetBlue

.SelectionForeColor = Color.WhiteSmoke

End With

Dim grdColStyle1 As New DataGridTextBoxColumn

With grdColStyle1

.HeaderText = "ID. Producto"

.MappingName = "ProductID"

.Width = 50

End With

Dim grdColStyle2 As New DataGridTextBoxColumn

With grdColStyle2

.HeaderText = "Descripción"

.MappingName = "ProductName"

.Width = 225

End With

Dim grdColStyle3 As New DataGridTextBoxColumn

With grdColStyle3

.HeaderText = "Precio"

.MappingName = "UnitPrice"

.Width = 70

End With

Dim grdColStyle4 As New DataGridTextBoxColumn

With grdColStyle4

.HeaderText = "Cantidad en almacen"

.MappingName = "UnitsInStock"
.Width = 70

End With

dgTableStyle1.GridColumnStyles.AddRange _

(New DataGridColumnStyle() _

{grdColStyle1, grdColStyle2, grdColStyle3, grdColStyle4})

Me.grdProductos.TableStyles.Add(dgTableStyle1)

El código anterior tiene dos objetivos. El primero es pasar el conjunto de resultados al
grid, dicha información viene desde la función diseñada del formulario base. Esta
función esta declarada como Protected la cual permite un alcance único a clases
derivadas de su propia clase base. La segunda parte es estilizar el grid con colores y
formas más vistosas.

Como se puede apreciar, hay código dentro del formulario base que es ejecutado y hay
código dentro del formulario heredado. La diferencia de ambos radica, que el código del
formulario base puede ser utilizado en sus clases derivadas en este caso en el formulario
heredado con la función que retorna el conjunto de resultados. En el formulario
heredado hay código que solamente puede ser ejecutado en el mismo, no en clases
derivadas. Ya que el formulario heredado es una clase derivada.

Para finalizar muestro el formulario heredado en tiempo de ejecución:
Conclusiones

La herencia visual .NET es un camino más en el perfeccionamiento para el desarrollo de
aplicaciones Windows. Pues con algunas cuantas líneas de código es posible obtener
una aplicación robusta, escalable, ágil que posea las mismas características visuales del
resto de formularios utilizados. Minimizando de esta manera el tratamiento y desarrollo
de formularios y controles para la misma.

Cada aplicación bien desarrollada es sinónimo de solución. Y cada solución es

Tamaño 65 KB

Más contenido relacionado

La actualidad más candente

La actualidad más candente (19)

Seguridad en access
Seguridad en accessSeguridad en access
Seguridad en access
 
Formularios HTML
Formularios HTMLFormularios HTML
Formularios HTML
 
Dce2 Introduccion Win Forms
Dce2 Introduccion Win FormsDce2 Introduccion Win Forms
Dce2 Introduccion Win Forms
 
Bases de datos_angelina_monetti
Bases de datos_angelina_monettiBases de datos_angelina_monetti
Bases de datos_angelina_monetti
 
Windows.forms.ejercicios
Windows.forms.ejerciciosWindows.forms.ejercicios
Windows.forms.ejercicios
 
Manual Visual Basic .NET SQL Server paso a paso
Manual Visual Basic .NET SQL Server paso a pasoManual Visual Basic .NET SQL Server paso a paso
Manual Visual Basic .NET SQL Server paso a paso
 
Programacion2
Programacion2Programacion2
Programacion2
 
Guía básica de Visual Basic 6.0
Guía básica de Visual Basic 6.0Guía básica de Visual Basic 6.0
Guía básica de Visual Basic 6.0
 
Guia practica java script
Guia practica java scriptGuia practica java script
Guia practica java script
 
Visual 6.0
Visual 6.0Visual 6.0
Visual 6.0
 
Manual poo-unidad-visual-basic
Manual poo-unidad-visual-basicManual poo-unidad-visual-basic
Manual poo-unidad-visual-basic
 
Guía JavaScript
Guía JavaScriptGuía JavaScript
Guía JavaScript
 
Tema2 ado net
Tema2 ado netTema2 ado net
Tema2 ado net
 
office
officeoffice
office
 
Guia Practica Maquetación HTML5, CSS
Guia Practica Maquetación HTML5, CSSGuia Practica Maquetación HTML5, CSS
Guia Practica Maquetación HTML5, CSS
 
Formulario
FormularioFormulario
Formulario
 
284
284284
284
 
Programación III
Programación IIIProgramación III
Programación III
 
pasos para hacer una mini agenda en visual basic 6.0
pasos para hacer una mini agenda en visual basic 6.0pasos para hacer una mini agenda en visual basic 6.0
pasos para hacer una mini agenda en visual basic 6.0
 

Similar a A toda máquina con herencia visual

Clase 10 formularios
Clase 10   formulariosClase 10   formularios
Clase 10 formularioshydras_cs
 
Primeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier AznarPrimeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier AznarPablo Aguilera
 
INFOSAN VISUAL BASIC
INFOSAN VISUAL BASICINFOSAN VISUAL BASIC
INFOSAN VISUAL BASICFRANCIACOCO
 
Manual acceso a datos vb.net
Manual acceso a datos vb.netManual acceso a datos vb.net
Manual acceso a datos vb.netcedido
 
Herramientas Visual Basic (vb)
Herramientas Visual Basic (vb)Herramientas Visual Basic (vb)
Herramientas Visual Basic (vb)Darwin Ortiz
 
Dce2 introduccion win_forms
Dce2 introduccion win_formsDce2 introduccion win_forms
Dce2 introduccion win_formsguest85b8e5a
 
Dce2 introduccion win_forms
Dce2 introduccion win_formsDce2 introduccion win_forms
Dce2 introduccion win_formsguest85b8e5a
 
Desarrollas aplicaciones de escritorio:)
Desarrollas aplicaciones de escritorio:)Desarrollas aplicaciones de escritorio:)
Desarrollas aplicaciones de escritorio:)LuisSlz
 
Formulario
FormularioFormulario
FormularioRandy
 
Fundamentos vb
Fundamentos vbFundamentos vb
Fundamentos vbvalerin01
 
1TAP Tema 1-GUI.pptx
1TAP Tema 1-GUI.pptx1TAP Tema 1-GUI.pptx
1TAP Tema 1-GUI.pptxATM_SSI
 
Configuracion de zend framework y ejemplo en mysql
Configuracion de zend framework y ejemplo en mysqlConfiguracion de zend framework y ejemplo en mysql
Configuracion de zend framework y ejemplo en mysqlGilder Bravo Cervantes
 

Similar a A toda máquina con herencia visual (20)

Clase 10 formularios
Clase 10   formulariosClase 10   formularios
Clase 10 formularios
 
Primeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier AznarPrimeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier Aznar
 
visual basic
visual basicvisual basic
visual basic
 
INFOSAN VISUAL BASIC
INFOSAN VISUAL BASICINFOSAN VISUAL BASIC
INFOSAN VISUAL BASIC
 
Vb
VbVb
Vb
 
Visual 6.0
Visual 6.0Visual 6.0
Visual 6.0
 
Visual basic
Visual basicVisual basic
Visual basic
 
Guia 0 vb induccion
Guia 0 vb    induccionGuia 0 vb    induccion
Guia 0 vb induccion
 
Manual acceso a datos vb.net
Manual acceso a datos vb.netManual acceso a datos vb.net
Manual acceso a datos vb.net
 
Trabajo sobre visual basic
Trabajo sobre visual basic Trabajo sobre visual basic
Trabajo sobre visual basic
 
tutorial C#
tutorial C#tutorial C#
tutorial C#
 
Herramientas Visual Basic (vb)
Herramientas Visual Basic (vb)Herramientas Visual Basic (vb)
Herramientas Visual Basic (vb)
 
Dce2 introduccion win_forms
Dce2 introduccion win_formsDce2 introduccion win_forms
Dce2 introduccion win_forms
 
Dce2 introduccion win_forms
Dce2 introduccion win_formsDce2 introduccion win_forms
Dce2 introduccion win_forms
 
Desarrollas aplicaciones de escritorio:)
Desarrollas aplicaciones de escritorio:)Desarrollas aplicaciones de escritorio:)
Desarrollas aplicaciones de escritorio:)
 
Formulario
FormularioFormulario
Formulario
 
Fundamentos vb
Fundamentos vbFundamentos vb
Fundamentos vb
 
1TAP Tema 1-GUI.pptx
1TAP Tema 1-GUI.pptx1TAP Tema 1-GUI.pptx
1TAP Tema 1-GUI.pptx
 
Visual Basic 6 studio.pdf
Visual Basic 6 studio.pdfVisual Basic 6 studio.pdf
Visual Basic 6 studio.pdf
 
Configuracion de zend framework y ejemplo en mysql
Configuracion de zend framework y ejemplo en mysqlConfiguracion de zend framework y ejemplo en mysql
Configuracion de zend framework y ejemplo en mysql
 

A toda máquina con herencia visual

  • 1. A Toda Máquina Con Herencia Visual .NET Fecha: 03/Sep/2005 (31/08/05) Autor: Lic. Giovanni Cuadra Reyes AmericanCollege IT Manager Email: giovanni_cuadra@hotmail.com gcuadra@americancollege.edu.ni !!!Tecnología de la Programación!!! Managua, Nicaragua. Introducción Cuando decidí escribir este artículo acerca de Herencia Visual .NET, estaba trabajando una aplicación en la cual utilice gran parte herencia de formularios, y fue con el propósito en dar a conocer una forma más practica en simplificar horas de trabajo en el diseño de formularios y porque no decirlo en la escritura de código. Si no me falla la memoria en la versión empresarial de Microsoft Visual Basic 6.0, Microsoft presento en los complementos de esta herramienta una forma de reutilizar los formularios a partir de diseños personalizados por el desarrollador o por plantillas que la misma herramienta traía consigo. De tal forma que podíamos reutilizar formularios y código sin afectar el original y los mismos podíamos convertirlos en plantillas de diseño. Aunque este tipo de implementación esta muy lejos de ser el concepto de Herencia Visual .NET, proporciono en su época los mecanismos para que esta misma fuese implementada en versiones futuras de Visual Studio y totalmente mejorada hasta llegar a lo que hoy en día conocemos como Herencia Visual de Formularios Windows. Este artículo esta orientado a lo que es Herencia Visual .NET, como trabaja, como se comportan los formularios heredados con respecto a los formularios bases, como se comportan los métodos y/o eventos en su ejecución y en como estos elementos pueden ejecutar código desde una clase base a una clase derivada. Qué es la Herencia Visual de Formularios
  • 2. La Herencia Visual de Formularios podría definirse como el duplicado de un formulario a partir de otro, denominado original o formulario base o clase base, de otra forma dicha, podría también ser definido como una clase derivada de formulario por una clase base de formulario. El formulario base o clase base, seria de donde se deriva el formulario heredado o clase heredada a la cual se le denomina clase derivada. Por lo tanto el formulario base hereda sus características de la clase base System.Windows.Forms.Form, mientras que el formulario derivado, sus características son heredadas directamente del formulario base. A continuación muestro un ejemplo de lo anteriormente expuesto: La figura 1.0 Muestra la clase base. La figura 2.0 Muestra la clase derivada. Recordemos que los formularios en VB.NET no son mas que una clase que pueden heredar un nuevo formulario a partir de técnicas estándares de herencia visual. Por lo tanto unas de las funcionalidades de la herencia visual es por ejemplo que a partir de un
  • 3. formulario base se puede representar un tamaño estandar de objetos, como lo son botones, cajas de texto y otros controles contenido dentro del mismo. Por el cual cualquier formulario derivado de esa base, tendrá las misma formas de controles y tamaños y posición. Herencia Visual en Microsoft Visual Basic .NET Los diseñadores de formularios Windows soportan herencia de formularios. En el diseñador, aparece un el menú de proyectos la opción herencia de formularios. Se ejecuta esta opción y a continuación se visualiza una pantalla el cual solicita el nombre del nuevo formulario heredado. A continuación muestro el menú para ejecutar la opción : La figura 3.0 Muestra la opción que permite crear un formulario heredado.
  • 4. La figura 4.0 Muestra las plantilla para herencia de formularios. Todos los eventos manejados que se especifican en el formulario base, automáticamente trabajan de la misma forma que en los formularios heredados. Por ejemplo, si un botón en un formulario base especifica un evento manejado, dicha de otra forma esta programado. En el formulario heredado los botones llaman a los eventos manejados de la clase base. Por lo tanto, si se agrega un evento manejado en la clase heredada para un componente en la clase base, ambos eventos son ejecutados, con la diferencia que el evento de la clase base se dispara primero, seguido del evento manejado de la clase heredada. Otro comportamiento interesante es que los eventos manejados del formulario base pueden sobrescribirse, sin embargo para poder cumplir esto, será necesario utilizar la palabra reservada Overridable en la definición de los eventos manejados de la clase base y entonces se crea un nuevo método en la clase heredada con la misma lista de parámetros. No se debe utilizar la palabra reservada Handles en los métodos sobrescritos en los formularios heredados. Por lo tanto si se quiere llamar a eventos manejados de un formulario base dentro de un método Overridden se requiere utilizar el objeto MyBase para acceder al formulario base. Hay que recordar también que la herencia de formularios no es una operación en línea. Por ejemplo, si se actualiza el formulario base con el objetivo en reemplazar objetos, se tendrá que ejecutar el depurador con el propósito de actualizar todos los formularios
  • 5. heredados que provienen del formulario base modificado, dicho de otra forma, recompilar la aplicación nuevamente. Tomando en cuenta que el formulario heredado tiene que estar cerrado. Por último, las propiedades de los formularios heredados pueden ser programados y personalizados como las de cualquier otro formulario, todo es que la propiedad Modifiers de los controles del formulario base sea cambiada a Protected la cual seria el alcance que tendrían las propiedades del formulario base. Modifiers predeterminadamente se encuentra como Friend el cual especifica que su alcance es solo para la clase base. Implementando una solución con Visual Basic .NET A continuación muestro un ejemplo muy sencillo utilizando herencia visual de formularios. Los siguientes requisitos serán necesarios: Microsoft Visual Basic .NET 2003 Microsoft SQL Server 2000 Microsoft Windows XP o superior Computador Pentium o superior Memória RAM 128 o superior Monitor VGA de ‘’15 o superior A continuación muestro el siguiente formulario el cual estará definido como el formulario base de la aplicación, así como el código dentro del mismo: Protected Const SQL_INFOCONNECTION As String = _
  • 6. "Server=localhost;" & _ "DataBase=Northwind;" & _ "Integrated Security=SSPI" Protected Connect As Boolean = False Protected connectionString As String = SQL_INFOCONNECTION Protected Function GetDataSource() As DataSet Static ConnectionString As String = SQL_INFOCONNECTION Static Connect As Boolean = False '--Crear instancia al formulario del status de conexión. Dim frmStatusMessage As New frmStatus '--Primera vez que se conecta. If Not Connect Then '--Mensaje al usuario de intento de conexión. frmStatusMessage.Show("Conectando con el servidor de datos...") End If '--Inicializar el intento de conexión para entrar al ciclo. Dim IsConnecting As Boolean = True While IsConnecting Try '--Inicializar conexión a la base de datos. Dim cnNorthwind As New SqlConnection(ConnectionString) '--Ejecutar adaptador con la tabla productos. Dim da As New SqlDataAdapter( _ "SELECT ProductID, ProductName, UnitPrice, UnitsInStock " & _ "FROM products", cnNorthwind) Dim dsProducts As New DataSet '--Inicializar y llenar dataset. dsProducts.Clear()
  • 7. da.Fill(dsProducts, "Products") IsConnecting = False Connect = True frmStatusMessage.Close() '--Retornar conjunto de datos a su destino. Return dsProducts Catch exc As Exception '--Cerrar formulario frmStatusMessage.Close() '--Enviar mensaje al usuario. System.Windows.Forms.MessageBox.Show(exc.Message, "Herencia Visual .NET", _ MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1) End Try End While '--Cerrar formulario. frmStatusMessage.Close() End Function Private Sub btnCerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCerrar.Click '--Cerrar el form y terminar la aplicación. Me.Close() End End Sub En el código anterior se crea una función que permite crear conexión con la base de datos de SQL Server 2000 y la cual enviara el conjunto de datos a un control enlazado. El clic del botón cerrar cierra cualquier formulario heredado, ya que primeramente se ejecuta el método clic del formulario base y luego el método clic del formulario heredado. A continuación se muestra el formulario heredado en tiempo de diseño, así como su código :
  • 8. '--Inicializar grid y crear estilos. With Me.grdProductos .CaptionText = "Lista de productos desglosada" .DataSource = GetDataSource().Tables(0) End With '--Aplicar estilos al grid. Dim dgTableStyle1 As New DataGridTableStyle With dgTableStyle1 .AlternatingBackColor = Color.Red .BackColor = Color.WhiteSmoke .ForeColor = Color.MidnightBlue .GridLineColor = Color.Gainsboro .GridLineStyle = System.Windows.Forms.DataGridLineStyle.None .HeaderBackColor = Color.MidnightBlue .HeaderFont = New Font("Tahoma", 8.0!, FontStyle.Bold)
  • 9. .HeaderForeColor = Color.WhiteSmoke .LinkColor = Color.Teal .MappingName = "Products" .SelectionBackColor = Color.CadetBlue .SelectionForeColor = Color.WhiteSmoke End With Dim grdColStyle1 As New DataGridTextBoxColumn With grdColStyle1 .HeaderText = "ID. Producto" .MappingName = "ProductID" .Width = 50 End With Dim grdColStyle2 As New DataGridTextBoxColumn With grdColStyle2 .HeaderText = "Descripción" .MappingName = "ProductName" .Width = 225 End With Dim grdColStyle3 As New DataGridTextBoxColumn With grdColStyle3 .HeaderText = "Precio" .MappingName = "UnitPrice" .Width = 70 End With Dim grdColStyle4 As New DataGridTextBoxColumn With grdColStyle4 .HeaderText = "Cantidad en almacen" .MappingName = "UnitsInStock"
  • 10. .Width = 70 End With dgTableStyle1.GridColumnStyles.AddRange _ (New DataGridColumnStyle() _ {grdColStyle1, grdColStyle2, grdColStyle3, grdColStyle4}) Me.grdProductos.TableStyles.Add(dgTableStyle1) El código anterior tiene dos objetivos. El primero es pasar el conjunto de resultados al grid, dicha información viene desde la función diseñada del formulario base. Esta función esta declarada como Protected la cual permite un alcance único a clases derivadas de su propia clase base. La segunda parte es estilizar el grid con colores y formas más vistosas. Como se puede apreciar, hay código dentro del formulario base que es ejecutado y hay código dentro del formulario heredado. La diferencia de ambos radica, que el código del formulario base puede ser utilizado en sus clases derivadas en este caso en el formulario heredado con la función que retorna el conjunto de resultados. En el formulario heredado hay código que solamente puede ser ejecutado en el mismo, no en clases derivadas. Ya que el formulario heredado es una clase derivada. Para finalizar muestro el formulario heredado en tiempo de ejecución:
  • 11. Conclusiones La herencia visual .NET es un camino más en el perfeccionamiento para el desarrollo de aplicaciones Windows. Pues con algunas cuantas líneas de código es posible obtener una aplicación robusta, escalable, ágil que posea las mismas características visuales del resto de formularios utilizados. Minimizando de esta manera el tratamiento y desarrollo de formularios y controles para la misma. Cada aplicación bien desarrollada es sinónimo de solución. Y cada solución es Tamaño 65 KB