martes, 2 de diciembre de 2014

Tutorial

Como hacer un sistema para restaurante en Visual Basic 2013
 
Lo puedes ver desde YouTube dando click aqui

sábado, 29 de noviembre de 2014

Introducción a ASP.NET

Esta sección contiene temas que proporcionan información general acerca de ASP.NET, en qué se diferencia ASP.NET 2.0 de versiones anteriores y qué se necesita para crear y ejecutar aplicaciones Web ASP.NET.

ASP.NET

Usar servicios de aplicación ASP.NET

ASP.NET proporciona servicios de aplicación, a los que se puede obtener acceso en la web, que permiten a las aplicaciones cliente usar la información de autenticación, rol y perfil del usuario. Las aplicaciones cliente escritas en lenguajes diferentes y que se ejecutan en sistemas operativos diferentes pueden tener acceso a los servicios. El único requisito es que estos clientes deben poder comunicar usando el protocolo SOAP 1.1. 
Este tutorial muestra cómo configurar y utilizar los servicios de aplicación ASP.NET. El tutorial está dividido en las siguientes partes:
  • La primera parte muestra cómo configurar un sitio web ASP.NET para exponer los servicios de aplicación.
  • La segunda parte muestra cómo compilar una aplicación de consola de Windows con acceso a la información de autenticación, rol y perfil de un usuario. En este tutorial generará una aplicación de consola de Windows, pero los servicios de la aplicación ASP.NET están disponibles para todas las aplicaciones cliente que pueden enviar y recibir mensajes en formato SOAP.
  • La parte final describe cómo implementar el sitio web de los servicios de aplicación en Windows Server 2008 e IIS 7.0.

Requisitos previos

Para poder completar este tutorial, necesitará:
  • Visual Studio 2010. No puede usar Microsoft Visual Web Developer 2005 para este tutorial porque creará una aplicación de consola de Windows, que no se admite en Visual Web Developer Express.
  • Microsoft SQL Server o SQL Server Express Edition instalado en el equipo.

Exponer los servicios de aplicación

En esta sección se describe cómo exponer los servicios de aplicación como parte de un sitio web ASP.NET para que cualquier cliente pueda tener acceso a ellos en la red. Los pasos descritos aquí solo se aplican al servidor. 

Para crear el sitio web de los servicios de aplicación

  1. Abra Visual Studio 2010.
  2. En el menú Archivo, haga clic en Nuevo sitio Web.
    Aparece el cuadro de diálogo Nuevo sitio web.
  3. En Plantillas instaladas de Visual Studio, seleccione Sitio web ASP.NET.
  4. En la lista Ubicación, seleccione Sistema de archivos.
  5. En el cuadro de texto Carpeta, asigne el nombre WcfApplicationServices al sitio web.                                  
  6. Haga clic en Aceptar.
    Visual Studio crea un nuevo sitio web ASP.NET y abre la página Default.aspx.
  7. En el menú Ver, haga clic en Otras ventanas y, a continuación, haga clic en Ventana Propiedades.
  8. En el Explorador de soluciones, haga clic en el nombre del sitio web.
  9. En la ventana Propiedades, establezca Usar puertos dinámicos en False.
    Esto indica a Visual Studio que especifique un puerto fijo en lugar de un puerto seleccionado de forma aleatoria cuando inicie el servidor de desarrollo de ASP.NET. En este tutorial, debe tener un número de puerto fijo que pueda usar al generar las clases de proxy de cliente y los archivos de configuración. Para obtener más información, vea Cómo: Especificar un puerto para el servidor de desarrollo.
     
  10. Establezca el Número de puerto en 8080.                                  
La información de pertenencia, función y perfil de ASP.NET se almacena en una base de datos. Esta base de datos se crea automáticamente la primera vez que se obtiene acceso a ella. En el procedimiento siguiente, escribirá código que crea usuarios y roles para el sitio web. La primera vez que se tiene acceso al sitio web, se crea la base de datos automáticamente. Además, se le agregan dos roles (Managers y Friends).

Proveedores de Datos en ADO.NET

Los proveedores de acceso a datos ADO.NET (conocidos como "Managed Data Providers")
representa un conjunto especifico de clases que permiten conectarse e interactuar con una base
de datos, cada uno utilizando un protocolo particular. El .NET Framework incluye cuatro
proveedores de acceso a datos que en conjunto le permiten conectarse e interactuar virtualmente
con cualquier base de datos existente en la actualidad:

ADO.NET

DO.NET es un conjunto de clases que exponen servicios de acceso a datos para programadores de .NET Framework. ADO.NET ofrece abundancia de componentes para la creación de aplicaciones de uso compartido de datos distribuidas. Constituye una parte integral de .NET Framework y proporciona acceso a datos relacionales, XML y de aplicaciones. ADO.NET satisface diversas necesidades de desarrollo, como la creación de clientes de base de datos front-end y objetos empresariales de nivel medio que utilizan aplicaciones, herramientas, lenguajes o exploradores de Internet.

Polimorfismo en Visual Basic

 Cómo proporciona Visual Basic el polimorfismo

La mayoría de los sistemas de programación orientada a objetos proporcionan polimorfismo mediante la herencia. Es decir, las hipotéticas clases Pulga y Tiranosaurio pueden heredar características de una clase Animal. Cada clase invalidaría el método Morder de la clase Animal para aportar sus propias características de mordedura.
El polimorfismo proviene del hecho de que puede llamar al método Morder de un objeto que pertenezca a cualquier clase derivada de Animal sin conocer la clase a la que pertenece el objeto.
Proporcionar polimorfismo mediante interfaces
Visual Basic no utiliza la herencia para proporcionar polimorfismo. Visual Basic proporciona el polimorfismo mediante múltiples interfaces ActiveX. En el Modelo de objetos componentes (COM) que forma la infraestructura de la especificación ActiveX, las múltiples interfaces permiten que los sistemas de componentes software evolucionen sin afectar al código existente.
Una interfaz es un conjunto de propiedades y métodos relacionados. Gran parte de la especificación ActiveX se ocupa de la implementación de interfaces estándar para obtener servicios del sistema o para proporcionar funcionalidad a otros programas.
En Visual Basic podría crear una interfaz Animal e implementarla en las clases Pulga y Tiranosaurio. Después podría invocar el método Morder de cualquiera de los dos tipos de objeto sin conocer su tipo.
Polimorfismo y rendimiento
El polimorfismo es importante por razones de rendimiento. Para comprobarlo, observe la función siguiente
Public Sub Alimentarse(ByVal Critter As Object, _
ByVal Food As Object)
	Dim dblDistance As Double
	' Código para calcular la distancia a la comida 
	'(omitido).
	Critter.Mover dblDistance	' Enlace en tiempo de 
										' compilación
	Critter.Morder Food			' Enlace en tiempo de 
										' compilación
End Sub
 

Los métodos Mover y Morder son enlaces en tiempo de compilación con Critter. El enlace en tiempo de compilación tiene lugar cuando Visual Basic no puede determinar en tiempo de compilación el tipo de objeto que contendrá una variable. En este ejemplo, el argumento Critter está declarado como As Object, de forma que en tiempo de ejecución pueda contener una referencia a cualquier tipo de objeto, como un Coche o una Roca.
Como no puede saber cuál será el objeto, Visual Basic compila una parte de código adicional para preguntar al objeto si acepta el método llamado. Si el objeto acepta el método, dicho código adicional lo invoca; si no, el código adicional desencadena un error. Todas las llamadas a métodos o a propiedades incurren en esta carga adicional.
Por el contrario, las interfaces permiten los enlaces en tiempo de diseño. Cuando Visual Basic conoce en tiempo de compilación la interfaz que se va a llamar, puede comprobar en la biblioteca de tipos si dicha interfaz acepta el método. Después, Visual Basic puede compilar un salto directo al método, mediante una tabla virtual de funciones (vtable). Esto es muchas veces más rápido que el enlace en tiempo de compilación.
Ahora suponga que los métodos Mover y Morder pertenecen a la interfaz Animal y que todas las clases de animales implementan esta interfaz. Ahora podría declarar el argumento Critter como As Animal y los métodos Mover y Morder se enlazarán en tiempo de diseño:
Public Sub Alimentarse(ByVal Critter As Animal, _
ByVal Food As Object)
	Dim dblDistance As Double
	' Código para calcular la distancia a la comida 
	'(omitido).
	Critter.Mover dblDistance	' Enlace en tiempo de 
					' diseño.
	Critter.Morder Food		' Enlace en tiempo de 
					' diseño.
End Sub
 

Definiendo Propiedades e Implementando Métodos

Crear una aplicación que contiene una clase de Visual Basic .NET
  1. Inicie Visual Studio .NET y cree un nuevo proyecto de aplicación de consola de Visual Basic .NET llamado EmployeeProperties.
  2. En el menú Proyecto, haga clic en Agregar clase. En el cuadro de diálogo Agregar nuevo elemento, escriba Employee.vb en el cuadro Nombre y, a continuación, haga clic en Abrir.
  3. Examine el código de la nueva clase en la ventana Ver código.

Definir campos, constructores y métodos

  1. Agregue tres campos Private a la clase Employee de la manera siguiente:
    Private Name As String
    Private Salary As Decimal
    Private HireDate As DateTime
  2. Defina un constructor para la clase con el fin de inicializar los campos de la clase Employee:
    Public Sub New(ByVal Name As String, _
                   ByVal Salary As Decimal, _
                   ByVal HireDate As DateTime)
       Me.Name = Name
       Me.Salary = Salary
       Me.HireDate = HireDate
    End Sub
  3. Agregue un método Public a la clase:
    Public Sub PayRise(ByVal Amount As Decimal)
       Me.Salary += Amount
    End Sub

Definir propiedades en la clase

  1. Agregue el código siguiente para agregar una propiedad de lectura y escritura llamada FullName. El descriptor de acceso Get devuelve el nombre del empleado. El descriptor de acceso Set utiliza el parámetro Value que se pasa en el descriptor de acceso Set para establecer el nombre del empleado.
    Public Property FullName() As String
       Get
          Return Me.Name
       End Get
       Set(ByVal Value As String)
          Me.Name = Value
       End Set
    End Property
  2. Agregue el código siguiente para agregar una propiedad ReadOnly llamada Remuneration. El descriptor de acceso Get devuelve el sueldo del empleado. No hay ningún descriptor de acceso Set porque el sueldo no se puede establecer directamente; la única forma de cambiar el sueldo es llamar al método PayRise.
    Public ReadOnly Property Remuneration() As Decimal
       Get
          Return Me.Salary
       End Get
    End Property
  3. Agregue el código siguiente para agregar otra propiedad ReadOnly llamada DaysSinceJoined. El descriptor de acceso Get calcula cuántos días ha trabajado el empleado para la compañía.
    Public ReadOnly Property DaysSinceJoined() As Integer
       Get
          Dim timespan As TimeSpan = DateTime.Now.Subtract(Me.HireDate)
          return timespan.Days
       End Get
    End Property

Crear un objeto y utilizar las propiedades

  1. Muestre el código de Module1.vb en la ventana Ver código.
  2. En el método Main, utilice el operador New para crear un objeto Employee. Asigne la referencia de objeto a una variable local Employee del siguiente modo:
    Dim worker As New Employee( "Jayne Doe", _
                                 125000, _
                                 New DateTime(1998, 7, 31) )
  3. Agregue el código siguiente para cambiar la propiedad FullName del empleado. Esto invocará implícitamente el descriptor de acceso Set para la propiedad FullName.
    worker.FullName = "Jayne Lafayette"
  4. Agregue el código siguiente para mostrar los detalles del empleado mediante los descriptores de acceso Get para las propiedades FullName, Remuneration y DaysSinceJoined:
    Console.WriteLine("Nombre completo: " & worker.FullName)
    Console.WriteLine("Remuneración: " & worker.Remuneration)
    Console.WriteLine("Días trabajados: " & worker.DaysSinceJoined)

Comprobar que funciona

  1. Genere y ejecute la aplicación.
  2. La aplicación mostrará la siguiente información en la consola (el valor "Días trabajados" depende de la fecha actual):
    Nombre completo: Jayne Lafayette
    Remuneración: 125000
    Días trabajados: 1139
  3. Vuelva al archivo Module1.vb en la ventana Ver código y agregue el código siguiente al final del método Main:
    worker.Remuneration = 1000000
  4. Pruebe a generar la aplicación. Aparecerá un error de compilación porque Remuneration es una propiedad de sólo lectura.
  5. Cambie la instrucción de la manera siguiente:
    worker.Salary = 1000000
  6. Pruebe a generar de nuevo la aplicación. Aparecerá otro error de compilación porque el campo Salary está marcado como Private. La única forma de modificar el sueldo del empleado es utilizar el método público PayRise.

NameSpaces

System.Data.SqlClient

El espacio de nombres System.Data.SqlClient es el proveedor de datos de .NET Framework para SQL Server.
Un proveedor de datos de .NET Framework para SQL Server describe una colección de clases utilizada para tener acceso a una base de datos de SQL Server en el espacio administrado. Al utilizar SqlDataAdapter, se puede rellenar un DataSet residente en memoria, que sirve para consultar y actualizar la base de datos.

Módulos de Clase en Visual Basic

La diferencia principal entre clases y módulos consiste en que pueden crearse instancias de clases como objetos pero no de módulos. Como sólo existe una copia de los datos de un módulo estándar, cuando una parte del programa cambia una variable pública en un módulo estándar, cualquier otra parte del programa obtendrá el mismo valor si lee luego esa variable. En comparación, los datos de objeto existen individualmente para cada objeto con instancias. Otra distinción es que, a diferencia de los módulos estándar, las clases pueden implementar interfaces.
7825002w.alert_note(es-es,VS.90).gifNota:
Cuando el modificador Shared se aplica a un miembro de clase, está asociado con la propia clase en lugar de con una instancia determinada de la clase. Se tiene acceso directo al miembro mediante el nombre de clase, de la misma manera que se tiene acceso a los miembros de módulos. Para obtener más información acerca de miembros compartidos, consulte Miembros compartidos en Visual Basic.
Las clases y los módulos también emplean ámbitos diferentes para sus miembros. Los miembros definidos dentro de una clase tienen el ámbito de una instancia específica de la clase y sólo existen mientras dure el objeto. Para tener acceso a los miembros de clases desde el exterior de una clase, debe utilizar los nombres completos con el formato Objeto.Miembro.
Por otro lado, los miembros declarados dentro de un módulo son de manera predeterminada accesibles públicamente y se puede obtener acceso a ellos mediante cualquier código que tenga acceso al módulo. Esto significa que las variables en un módulo estándar son de hecho variables globales porque son visibles desde cualquier parte del proyecto y existen durante toda la vida útil del programa.

Manejo de Excepciones en Visual Basic.net

Control estructurado de excepciones
 
En el control estructurado de excepciones, los bloques de código se encapsulan y cada uno de ellos tiene uno o varios controladores asociados. Cada controlador especifica una forma de condición de filtro para el tipo de excepción que controla. Cuando el código de un bloque protegido genera una excepción, se busca por orden en el conjunto de controladores correspondientes y se ejecuta el primero que contenga una condición de filtro coincidente. Un método puede tener varios bloques de control estructurado de excepciones y dichos bloques pueden además estar anidados.
La instrucción Try...Catch...Finally se utiliza específicamente para el control estructurado de excepciones.
Aquí en este manualillo solo se explicará este método, el control estructurado de excepciones.
Visual Basic admite el control estructurado de excepciones, que facilita la tarea de crear y mantener programas mediante controladores de errores consistentes y exhaustivos. El control estructurado de excepciones es un código diseñado para detectar y dar respuesta a los errores que se producen durante la ejecución, mediante la combinación de una estructura de control (similar a Select Case o While) con excepciones, bloques de código protegidos y filtros.
 
El uso de la instrucción TryCatchFinally permite proteger bloques de código con posibilidades de generar errores. Los controladores de excepciones pueden anidarse, y las variables que se declaren en cada bloque tendrán un ámbito local.
 
 
Try
‘El código que puede producir el error
Catch [filtros opcionales o tipos de errores a capturar]
‘Código para cuando se produzca un error
 [bloques catch adicionales]
Finally
‘Código para cuando aparezca o no un error
End Try
 
El bloque Try de un controlador de excepción Try...Catch...Finally contiene la sección del código que el controlador de errores va a supervisar. Si se produce un error durante la ejecución de cualquier parte del código de esta sección, Visual Basic examinará cada instrucción Catch de Try...Catch...Finally hasta que encuentre una cuya condición coincida con el error. Si la encuentra, el control se transferirá a la primera línea de código del bloque Catch. Si no se encuentra una instrucción Catch coincidente, la búsqueda continuará en las instrucciones Catch del bloque Try...Catch...Finally exterior que contiene el bloque en el que ocurrió la excepción. Este proceso se prolongará a lo largo de toda la pila hasta que se encuentre un bloque Catch coincidente en el procedimiento actual. De no encontrarse, se produciría un error.
El código de la sección Finally siempre se ejecuta en último lugar, inmediatamente antes que el bloque de control de errores pierda su ámbito, con independencia de que se ejecute el código de los bloques Catch. Sitúe el código de limpieza (el código que cierra los archivos y libera los objetos, por ejemplo) en la sección Finally.
 
Filtrar errores en el bloque Catch
Los bloques Catch ofrecen tres opciones para filtrar errores específicos. En una de ellas, los errores se filtran basándose en la clase de la excepción (en este caso ClassLoadException), como se muestra en el siguiente código:
Try  
   ' "Try" block.
Catch e as ClassLoadException  
   ' "Catch" block.
Finally  
   ' "Finally" block.
End Try
Si se produce un error ClassLoadException, se ejecuta el código del bloque Catch especificado.
En la segunda opción para filtrar errores, la sección Catch puede filtrar cualquier expresión condicional. Un uso común de este formato del filtro Catch consiste en comprobar números de error específicos, como se muestra en el código siguiente:
Try
   ' "Try" block.
Catch When ErrNum = 5 'Type mismatch.
   ' "Catch" block.
Finally
   ' "Finally" block.
End Try
 
Cuando Visual Basic encuentra el controlador de errores coincidente, ejecuta el código de este controlador y pasa el control al bloque Finally.
 
Nota   Al buscar un bloque Catch que controle una excepción, se evalúa el controlador de cada bloque hasta encontrar uno que coincida. Puesto que estos controladores pueden ser llamadas a funciones, es posible que se produzcan efectos secundarios no esperados; por ejemplo, una llamada de este tipo puede cambiar una variable pública y provocar que ésta se utilice en el código de un bloque Catch distinto que termina controlando la excepción.
La tercera alternativa, consiste en combinar las primeras dos opciones y utilizar ambas para el control de excepciones.
El bloque Finally siempre se ejecuta, con independencia de cualquier otra acción que tenga lugar en los bloques Catch anteriores. No puede utilizar Resume o Resume Next en el control estructurado de excepciones.
 
Ahora se realizarán una serie de ejemplos que aclararán lo expuesto
 
Ejemplo 1.
 
Module Module1
 
    Sub Main()
        Dim sValor As String
        Dim iNumero As Integer
        Try
            'Aqui comienza el control de errores
            Console.WriteLine("Introducir un número")
            sValor = Console.ReadLine
            'Si no hemos introducido ningún número
            iNumero = sValor 'aquí se producira un error
 
        Catch
            'Si se produce un error, se generará una excepción
            'que capturamos en este bloque de código
            'manipulador de excepción, definido por Catch
            Console.WriteLine("Error al introducir el número" & ControlChars.CrLf & "el valor {0} es incorrecto", sValor)
        End Try
        Console.Read()
    End Sub
 
End Module
 
Esta y las siguientes 2 líneas no pertenecen al código anterior
Observen que antes de module1 no están declaradas Option Explicit On o
Option Strict On.

Tipos de Errores en Visual Basic

En Visual Basic, los errores (también denominados excepciones) se dividen en tres categorías: errores de sintaxis, errores en tiempo de ejecución y errores lógicos.          

Errores de sintaxis 

Los errores de sintaxis son aquellos que aparecen mientras se escribe el código. Visual Basic comprueba el código mientras se escribe en la ventana Editor de código y alerta si se comete un error, por ejemplo, si se escribe mal una palabra o se usa un elemento del lenguaje de forma incorrecta. Los errores sintácticos son los errores más frecuentes. Se pueden corregir fácilmente en el entorno de codificación en cuanto se producen.
Nota Nota
La instrucción Option Explicit es una medida para evitar los errores de sintaxis. Le obliga a declarar, por anticipado, todas las variables que se vayan a utilizar en la aplicación. De este modo, cuando se utilicen las variables en el código, cualquier error tipográfico que se produzca se capturará de forma inmediata, y podrá corregirse.

Errores en tiempo de ejecución 

Los errores en tiempo de ejecución son aquellos que aparecen solamente después de la compilación y la ejecución del código. Pueden darse errores de este tipo, por ejemplo, en fragmentos de código aparentemente correctos, por no presentar errores sintácticos, pero que no se ejecutan correctamente. Por ejemplo, podría escribir correctamente una línea de código que abre un archivo. Pero, si el archivo está dañado, la aplicación no podrá ejecutar la función Open y se detendrá su ejecución. La mayoría de los errores de este tipo pueden corregirse modificando el código que presenta errores, para después compilarlo y volver a ejecutarlo.

Errores lógicos 

Los errores lógicos son aquellos que aparecen cuando la aplicación está en funcionamiento. Son a menudo resultados no deseados o inesperados en respuesta a acciones del usuario. Por ejemplo, una clave mal escrita u otra influencia externa podría hacer que la aplicación dejase de funcionar aún siendo correctos los parámetros, o que simplemente no funcionase. Por lo general, los errores lógicos son los más difíciles de corregir, puesto que no siempre está claro dónde se originan.

Controles en Visual Basic

En Visual Basic existen tres categorías generales de controles: Controles intrínsecos, Controles ActiveX, Objetos insertables
 
1. Controles intrínsecos
Estos controles se encuentran dentro del archivo ejecutable de Visual Basic. Los controles intrínsecos están siempre incluidos en el cuadro de herramientas, no como los controles Activex, que se pueden quitar o agregar al cuadro de herramientas. A continuación una lista de controles intrínsecos.
Nombre de controlNombre de claseDescripción
   
Casilla de verificaciónCheckBoxPresenta una opción de tipoVerdadero o Falso.
Cuadro combinadoComboBoxCambina un cuadro de texto y un cuadro de lista.
Botón de comandoCommandButtonEjecuta un comando o una acción cuando el usuario hace clic en él.
DatosDataPermite conectar una base de datos existente y presentar información en ella en los formularios.
Cuadro de lista de directoriosDirListBoxPresenta directorios y rutas de acceso.
Cuadro de lista de archivosFileListBoxPresenta una lista de archivos.
Cuadro de lista de unidadesDriveListBoxPresenta una lista de unidades de disco validas.
MarcoFrameProporciona un contenedor visual y funcional para los controles.
Barras de desplazamiento horizontal y verticalHScrollBar y VScrollBarPermite que un usuario agregue barras de desplazamiento a controles que no las tienen de forma automática.
ImagenImagePresenta mapas de bits, iconos o metarchivos de Windows, archivos JPEG o GIF, y actúa como un botón de comando cuando se hace clic en él.
EtiquetaLabelPresenta texto con el cual el usuario no puede interactuar ni modificar.
LíneaLineAgrega un segmento de línea recta a un formulario.
Cuadro de listaListBoxPresenta una lista de elementos entre los que el usuario puede elegir.
Contenedor OLEOLEIncrusta datos en una aplicación de Visual Basic.
Botón de opciónOptionButtonEl control OptionButton, como parte de un grupo de opciones con otros botones de opción. Presenta varias opciones entre las ue el usuario sólo puede elegir una.
Cuadro de imágenPictureboxPresenta mapas de bits, íconos o metarchivos de Windows y otros tipos de archivos graficos compatibles. También presenta texto o actúa como contenedor visual para otros controles..
FormaShapeAgrega un rectángulo, un cuadrado, una elipse o un circulo a un formulario, marco o cuadro de imagen.
Cuadro de textoTextBoxProporciona una área para escribir o presentar texto.
CronómetroTimerEjecuta eventos periódicos a intervalos de tiempo específicado.

2. Controles ActiveX
Son aquellos controles que existen como archivos independientes con extensión nombre de archivo .ocx. Entre éstos se incluyen los controles disponibles en todas las ediciones de Visual Basic (controles cuadrícula, cuadro combinado y lista enlazados a datos y varios más) y los que sólo están disponibles en la Edición Profesional y la Edición Empresarial (como Listview, Toolbar, Animation y Tabbed Dialog). A estos también se suman los controles Activex de otros fabricantes.
Nombre de controlNombre de claseDescripción
Control de datos ADOADODCCrea una conexión a una base de datos de datos mediane ADO. Asignable a la propiedad DataSource de otros controles, como el control DataGrid.
Dialogo comúnCommonDialogProporciona un conjunto de cuadros de diálogo estándar para operaciones como abrir y guardar archivos, establecer opciones de impresión y seleccionar colores y fuentes.
Cuadro combinado enlazado a datosDataGridProporciona las mayorías de las opciones del control ComboBox estándar, así como mayor capacidad de acceso a datos.
Cuadrícula Apex enlazada a datosDataGridControl con apariencia de una hoja de cálculo vinculado aun origén de datos como un control de datos ADO. Es posible la lectura y la modificación del recordset.
Cuadro de lista enlazado a datos.DataListProporciona la mayoría de de las características del control ListBox estándar, asi como mayor capacidad de acceso a datos.
FlexGrid de MicrosoftMSFlexGridControl con apariencia de hoja de cálculo de sólo lectura que se puede vincular al diseñador de entorno de datos para mostrar recordset jerárquicos
 
3. Objetos insertables
Como un objeto Worksheet de Microsoft Excel que contienen la lista de los empleados de su empresa, o un objeto Calendar de Microsoft Project que contiene la información del calendario de un proyecto. Puesto que estos objetos se pueden agregar al cuadro de herramientas, se les considera controles.
Convenciones de nomenclatura de los controles
Cuando crea un objeto (un formulario o un control) por primera vez, Visual Basic establece su propiedad Name a un valor predeterminado. Por ejemplo, todos los botones de comando tienen la propiedad Name establecida inicialmente a Commandn, donde n es 1, 2, 3 y así sucesivamente. Visual Basci llama al primer botón de comando de un formulario Command1, al segundo Command2 y al tercero Command3.
Puede mantener los nombres predeterminados; sin embargo, cuando tiene varios controles del mismo tipo, es más lógico modificar las propiedades Name para que sean algo más descriptivas. Como puede ser dificil distinguir entre el botón Command1 de miForm y el botón Command1 de SubForm, la convención de nomenclatura es recomendable, especialmente cuando una aplicación se compone de varios módulos de formulario, módulos estándar y módulos de clase.
Puede usar un prefijo para describir la clase, seguido de un nombre descriptivo del control. El uso de convención de nombres hace que el código sea más autodescriptivo y agrupa objetos similares alfabéticamente en el cuadro de lista Objeto. Por ejemplo:
chkSoloLectura
Los nombres de los formularios y los controles:
  • Deben empezar por una letra
  • Sólo deben contener letras, números y el carácter de subrayado (_); no se permiten signos de puntuación ni espacios en blanco.
  • No pueden tener una longitud mayor de 40 caracteres.
Para más información vea: Programar con estilo
Valores de los controles
Todos los controles tienen una propiedad que se puede usar para almacenar u obtener valores mediante una referencia al control, sin mencionar el nombre de la propiedad.
Este se denomina valor del control y normalmente es la propiedad más importante o la más frecuentemente utilizada del control.
Cuando quiera hacer una referencia a la propiedad de un control que es el valor de dicho control, puede hacerlo sin especificar el nombre de la propiedad. Por ejemplo, esta línea de código establece la propiedad Text de un cuadro de texto.
Text1 = "Este texto se asigna a la propiedad Text de Text1"
En este ejemplo, la propiedad Caption de Label1 se establece a la propiedad FileName de File1 cuando el usuario hace clic en un archivo del cuadro de lista de archivos:
Private File1_Click()
   Label1 = File1
End Sub
En la tabla siguiente se enumeran las propiedades consideradas como valor de control.
ControlValor
CheckBoxValue
ComboBoxText
CommandButtonValue
CommonDialogAction
DataCaption
DataComboText
DataGridText
DataListText
DirListBoxPath
DriveListBoxDrive
FileListBoxFileName
FlexGridText
FrameCaption
HScrollBarValue
ImagePicture
LabelCaption
LineVisible
ListBoxText
OptionButtonValue
PictureBoxPicture
ShapeShape
TextBoxText
TimerEnabled
VScrollBarValue

Como Agregar Controles a Formularios de Windows Form

La mayoría de los formularios se diseñan agregando controles a la superficie del formulario para definir una interfaz de usuario. Un control es un componente de un formulario que se utiliza para mostrar información o aceptar los datos introducidos por el usuario. Para obtener más información sobre controles, vea Controles de Windows Forms.
Nota Nota
Los cuadros de diálogo y comandos de menú que se ven pueden diferir de los descritos en la Ayuda, en función de los valores de configuración o de edición activos. Para cambiar la configuración, elija Importar y exportar configuraciones en el menú Herramientas. Para obtener más información, vea Valores de configuración de Visual Studio.

Para dibujar un control en un formulario

  1. Abra el formulario. Para obtener más información, vea Cómo: Mostrar formularios Windows Forms en el diseñador.
  2. En el Cuadro de herramientas, haga clic en el control que desee agregar al formulario.
  3. En el formulario, haga clic en el punto en que desee que se encuentre la esquina superior izquierda del control y arrastre hasta donde desee que se encuentre la esquina inferior derecha del control.
    El control se agregará al formulario con la ubicación y el tamaño especificados.
    Nota Nota
    Cada control tiene definido un tamaño predeterminado. Puede agregar un control al formulario con su tamaño predeterminado arrastrándolo desde el Cuadro de herramientas al formulario.

Para agregar un control a un formulario

  1. Abra el formulario. Para obtener más información, vea Cómo: Mostrar formularios Windows Forms en el diseñador.
  2. En el Cuadro de herramientas, haga clic en el control que desee y arrástrelo al formulario.
    El control se agregará al formulario en la ubicación especificada, con su tamaño predeterminado.                            
  3. Para agregar un control a un formulario mediante programación

    • En el método que controla el evento Click del botón dentro de la clase del formulario, inserte código similar al siguiente para agregar una referencia a la variable de control, establecer el valor de Location para el control y agregar el control:              
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
         Dim MyText As New TextBox()
         MyText.Location = New Point(25, 25)
         Me.Controls.Add(MyText)
      End Sub
     

Windows Form VB.NET

Puesto que los formularios son la unidad básica de una aplicación, es importante realizar algunas consideraciones sobre su función y su diseño. Un formulario es, en última instancia, una hoja en blanco que el desarrollador rellena con controles, para crear una interfaz de usuario, y con código, para procesar los datos. Para ese fin, Visual Studio proporciona un entorno de desarrollo integrado que ayuda a escribir el código, así como un completo conjunto de controles escrito con .NET Framework. La funcionalidad de estos controles se complementa con el código escrito por el desarrollador, lo que permite desarrollar fácil y rápidamente las soluciones deseadas.

Como Crear un Formulario MDI

Para crear formularios MDI secundarios

  1. Cree un formulario primario MDI con una estructura de menús que contenga los elementos de menú Archivo y Ventana de nivel superior y los elementos de menú Nuevo y Cerrar. Para obtener más información, vea Cómo: Crear formularios principales MDI.
  2. En la lista desplegable que se encuentra en la parte superior de la ventana Propiedades, seleccione el elemento de menú correspondiente al elemento Ventana y establezca el valor de la propiedad MdiList en true.
    Esto habilitará al menú Ventana para que mantenga una lista de ventanas secundarias MDI abiertas, con una marca de verificación junto a la ventana secundaria activa.
  3. En el Explorador de soluciones, haga clic con el botón secundario en el proyecto, haga clic en Agregar y seleccione Agregar nuevo elemento.
    Este formulario será la plantilla de los formularios MDI secundarios.
    Nota Nota
    El formulario secundario MDI que creará en este paso es un Windows Form estándar. Por tanto, tendrá una propiedad Opacity, que permite controlar la transparencia del formulario. Sin embargo, la propiedad Opacity está diseñada para ventanas de alto nivel. No la utilice con formularios MDI secundarios, porque pueden surgir problemas.
  4. En el cuadro de diálogo Agregar nuevo elemento, seleccione Windows Form (en Visual Basic o Visual C#) o Aplicación de Windows Forms (.NET) (en Visual C++) desde el panel Plantillas. En el cuadro Nombre, asigne al formulario el nombre Form2. Haga clic en el botón Abrir para agregar el formulario al proyecto.
    Se abrirá el Diseñador de Windows Forms, donde se mostrará el formulario Form2.
  5. En el Cuadro de herramientas, arrastre un control RichTextBox al formulario.
  6. En la ventana Propiedades, establezca la propiedad Anchor en Top, Left y la propiedad Dock en Fill.
    Esto hace que el control RichTextBox llene por completo el área del formulario MDI secundario, aunque se cambie el tamaño del formulario.
  7. Cree un controlador de eventos Click para el elemento de menú Nuevo. Para obtener información sobre cómo crear controladores de eventos, vea Cómo: Crear controladores de eventos con el diseñador.
  8. Inserte el código siguiente para crear un nuevo formulario MDI secundario cuando el usuario haga clic en el elemento de menú Nuevo.
    Nota Nota
    En el ejemplo siguiente, el controlador de eventos controla el evento Click para MenuItem2. Tenga presente que, en función de las características específicas de la arquitectura de la aplicación, podría ser que el elemento de menú Nuevo no fuese MenuItem2.
     
    Protected Sub MDIChildNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
       Dim NewMDIChild As New Form2()
       'Set the Parent Form of the Child window.
       NewMDIChild.MdiParent = Me
       'Display the new form.
       NewMDIChild.Show()
    End Sub
    
    
    
  9. Presione F5 para ejecutar la aplicación. Observe que al seleccionar Nuevo en el menú Archivo, puede crear nuevos formularios MDI secundarios de los que se hará un seguimiento en el menú Ventana.