Enciclopedia de Microsoft®

Visual Basic 
Interfaces gráficas y aplicaciones para Internet
con Windows Forms y ASP.NET
3.ª edición
Fco. Javier Ceballos Sierra
Profesor titular de la
Escuela Politécnica Superior
Universidad de Alcalá

www.fjceballos.es

Enciclopedia de Microsoft Visual Basic
Interfaces gráficas y aplicaciones para Internet con Windows Forms y ASP.NET
3.ª edición.
© Fco. Javier Ceballos Sierra
© De la edición: RA-MA 2013
MARCAS COMERCIALES: las marcas de los productos citados en el contenido de este libro
(sean o no marcas registradas) pertenecen a sus respectivos propietarios. RA-MA no está
asociada a ningún producto o fabricante mencionado en la obra, los datos y los ejemplos
utilizados son ficticios salvo que se indique lo contrario.
RA-MA es una marca comercial registrada.
Se ha puesto el máximo empeño en ofrecer al lector una información completa y precisa.
Sin embargo, RA-MA Editorial no asume ninguna responsabilidad derivada de su uso,
ni tampoco por cualquier violación de patentes ni otros derechos de terceras partes que pudieran
ocurrir. Esta publicación tiene por objeto proporcionar unos conocimientos precisos y acreditados
sobre el tema tratado. Su venta no supone para el editor ninguna forma de asistencia legal,
administrativa ni de ningún otro tipo. En caso de precisarse asesoría legal u otra forma de ayuda
experta, deben buscarse los servicios de un profesional competente.
Reservados todos los derechos de publicación en cualquier idioma.
Según lo dispuesto en el Código Penal vigente ninguna parte de este libro puede ser
reproducida, grabada en sistema de almacenamiento o transmitida en forma alguna ni
por cualquier procedimiento, ya sea electrónico, mecánico, reprográfico, magnético o
cualquier otro, sin autorización previa y por escrito de RA-MA; su contenido está protegido
por la Ley vigente que establece penas de prisión y/o multas a quienes intencionadamente,
reprodujeren o plagiaren, en todo o en parte, una obra literaria, artística o científica.
Editado por:
RA-MA Editorial
C/ Jarama, 3A, Polígono industrial Igarsa
28860 PARACUELLOS DEL JARAMA, Madrid
Teléfono: 91 658 42 80
Telefax: 91 662 81 39
Correo electrónico: editorial@ra-ma.com
Internet: www.ra-ma.es y www.ra-ma.com
ISBN: 978-84-9964-265-9
Depósito Legal: M-xxxxx-2013
Autoedición: Fco. Javier Ceballos
Filmación e impresión: Closas-Orcoyen, S.L.
Impreso en España
Primera impresión: octubre 2013

Si no puedo dibujarlo es que no lo entiendo.
(Einstein)
Dedico esta obra
a María del Carmen, mi esposa,
y a mis hijos Francisco y Javier.

CONTENIDO
PRÓLOGO.......................................................................................................... XXIII

PARTE 1. INTRODUCCIÓN...................................................

1

CAPÍTULO 1. INTRODUCCIÓN A MICROSOFT .NET ................................

PLATAFORMA .NET ........................................................................................
.NET Framework.................................................................................................
Aplicaciones de cliente ..................................................................................
Aplicaciones web ...........................................................................................
ADO.NET ......................................................................................................
Biblioteca de clases base ................................................................................
Entorno de ejecución común de los lenguajes ...............................................
.NET Framework y COM+ ............................................................................
Visual Studio ..................................................................................................








12 
13

CAPÍTULO 2. MI PRIMERA APLICACIÓN ....................................................

15 

MICROSOFT VISUAL STUDIO .......................................................................
Crear un nuevo proyecto ................................................................................
El formulario ..................................................................................................
Dibujar los controles ......................................................................................
Borrar un control ............................................................................................
Propiedades de los objetos .............................................................................
Bloquear la posición de todos los controles ...................................................
Icono de la aplicación ....................................................................................
Escribir los controladores de eventos .............................................................

15 
17 
21 
22 
27 
27 
29 
29 
30 

VIII

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

Guardar la aplicación .....................................................................................
Verificar la aplicación ....................................................................................
Propiedades del proyecto ...............................................................................
Crear soluciones de varios proyectos .............................................................
Opciones del EDI ...........................................................................................
Personalizar el EDI ........................................................................................
WPF ....................................................................................................................

33 
33 
35 
36 
37 
37 
38

PARTE 2. INTERFACES GRÁFICAS ................................... 41
CAPÍTULO 3. APLICACIÓN WINDOWS FORMS .........................................

43 

PROGRAMANDO EN WINDOWS...................................................................
ESTRUCTURA DE UNA APLICACIÓN..........................................................
Compilar y ejecutar la aplicación ...................................................................
DISEÑO DE LA INTERFAZ GRÁFICA ...........................................................
Crear un componente .....................................................................................
Controles más comunes ............................................................................
Añadir una etiqueta y editar sus propiedades............................................
Añadir un botón de pulsación y editar sus propiedades ............................
Añadir una descripción abreviada a un componente.................................
CONTROL DE EVENTOS ................................................................................
Asignar controladores de eventos a un objeto................................................
CICLO DE VIDA DE UN FORMULARIO .......................................................
PROPIEDADES BÁSICAS DE UN FORMULARIO........................................
Administración de la duración .......................................................................
Administración de formularios ......................................................................
Apariencia y comportamiento ........................................................................
CONFIGURACIÓN DE UNA APLICACIÓN ...................................................
RECURSOS DE UNA APLICACIÓN ...............................................................
ATRIBUTOS GLOBALES DE UNA APLICACIÓN........................................
CICLO DE VIDA DE UNA APLICACIÓN.......................................................
Permitir una sola instancia de la aplicación ...................................................
Argumentos en la línea de órdenes ................................................................
Pantalla de presentación .................................................................................

45 
47 
51 
53 
53 
53 
54 
56 
57 
58 
61 
62 
64 
64 
65 
65 
66 
68 
70 
71 
74 
75 
76

CAPÍTULO 4. INTRODUCCIÓN A WINDOWS FORMS ...............................

79 

BIBLIOTECA DE CLASES DE WINDOWS FORMS .....................................
CAJAS DE TEXTO, ETIQUETAS Y BOTONES .............................................
Desarrollo de la aplicación .............................................................................

79 
82 
82 

CONTENIDO

Objetos ......................................................................................................
Eventos......................................................................................................
Pasos a seguir durante el desarrollo ..........................................................
El formulario, los controles y sus propiedades .........................................
Tecla de acceso .........................................................................................
Botón predeterminado ...............................................................................
Responder a los eventos ............................................................................
Enfocar un objeto ...........................................................................................
Seleccionar el texto de una caja de texto .......................................................
INTERCEPTAR LA TECLA PULSADA ..........................................................
VALIDACIÓN DE UN CAMPO DE TEXTO ...................................................
Eventos Validating y Validated .....................................................................
Expresiones regulares ....................................................................................
Ejemplos de expresiones regulares ...........................................................
El motor de expresiones regulares ............................................................
MaskedTextBox .............................................................................................
EJERCICIOS RESUELTOS ...............................................................................
Diseño de una calculadora .............................................................................
Objetos ......................................................................................................
Eventos......................................................................................................
Pasos a seguir durante el desarrollo ..........................................................
Diseño de la ventana y de los controles .........................................................
Establecer una fuente .....................................................................................
Color ..............................................................................................................
Escribir el código ...........................................................................................
EJERCICIOS PROPUESTOS.............................................................................

IX

83 
83 
83 
84 
85 
85 
85 
89 
90 
91 
93 
96 
99 
99 
102 
104 
105 
106 
106 
106 
106 
107 
109 
109 
110 
119

CAPÍTULO 5. MENÚS Y BARRAS DE HERRAMIENTAS ............................ 121 
ARQUITECTURA ..............................................................................................
MENÚS ...............................................................................................................
DISEÑO DE UNA BARRA DE MENÚS ..........................................................
Crear un menú mediante programación .........................................................
Controlador de un elemento de un menú .......................................................
Aceleradores y nemónicos .............................................................................
IMÁGENES EN CONTROLES .........................................................................
Recursos de una aplicación ............................................................................
LISTA DE TAREAS...........................................................................................
BARRA DE HERRAMIENTAS.........................................................................
Diseño de una barra de herramientas .............................................................
BARRA DE ESTADO ........................................................................................
Diseño de una barra de estado ........................................................................

121 
123 
124 
125 
128 
129 
130 
130 
133 
134 
134 
136 
137 

X

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

DESARROLLO DE UN EDITOR DE TEXTOS ...............................................
Caja de texto multilínea .................................................................................
Diseño del editor ............................................................................................
El portapapeles ...............................................................................................
Objeto My.Computer.Clipboard ...............................................................
Trabajar con texto seleccionado .....................................................................
Diseño de la barra de menús ..........................................................................
Diseño de la barra de herramientas ................................................................
Asociar un método con un elemento de un menú ..........................................
Archivo - Salir...........................................................................................
Edición - Cortar.........................................................................................
Edición - Copiar ........................................................................................
Edición - Pegar..........................................................................................
Opciones - Fuente .....................................................................................
Opciones - Tamaño ...................................................................................
Habilitar o inhabilitar los elementos de un menú......................................
Marcar el elemento seleccionado de un menú ..........................................
Deshacer .........................................................................................................
Recordar las ediciones reversibles ............................................................
Añadir a la interfaz la orden Deshacer ......................................................
Listas desplegables en menús.........................................................................
MENÚS CONTEXTUALES ..............................................................................
MENÚS DINÁMICOS .......................................................................................
EJERCICIOS PROPUESTOS.............................................................................

138 
139 
140 
142 
142 
143 
144 
146 
147 
148 
148 
149 
149 
149 
151 
152 
153 
154 
154 
154 
155 
159 
161 
164

CAPÍTULO 6. CONTROLES Y CAJAS DE DIÁLOGO .................................. 169 
CAJAS DE DIÁLOGO MODALES Y NO MODALES ....................................
CAJAS DE MENSAJE .......................................................................................
Requerir datos con InputBox .........................................................................
Cómo se utilizan estas cajas de diálogo .........................................................
CAJAS DE DIÁLOGO PERSONALIZADAS ...................................................
Crear una caja de diálogo ...............................................................................
Mostrar una caja de diálogo ...........................................................................
Introducción de datos y recuperación de los mismos .....................................
DIÁLOGO ACERCA DE ...................................................................................
FORMULARIO PROPIETARIO........................................................................
OTROS CONTROLES WINDOWS FORMS ....................................................
Casillas de verificación ..................................................................................
Botones de opción ..........................................................................................
Listas simples .................................................................................................
Diseñar la lista...........................................................................................

170 
170 
174 
175 
176 
177 
178 
179 
181 
182 
183 
184 
188 
193 
194 

CONTENIDO

Iniciar la lista.............................................................................................
Acceder a los elementos seleccionados.....................................................
Colección de elementos de una lista .........................................................
Clase CheckedListBox ..............................................................................
Listas desplegables .........................................................................................
Diseñar la lista...........................................................................................
Iniciar la lista.............................................................................................
Acceder al elemento seleccionado ............................................................
Colección de elementos de una lista desplegable .....................................
Controles de rango definido ...........................................................................
ScrollBar ...................................................................................................
TrackBar ...................................................................................................
ProgressBar ...............................................................................................
Control con pestañas ......................................................................................
Gestión de fechas ...........................................................................................
FlowLayoutPanel y TableLayoutPanel ..........................................................
CAJAS DE DIÁLOGO ESTÁNDAR .................................................................
Cajas de diálogo Abrir y Guardar ..................................................................
Caja de diálogo Color ....................................................................................
Caja de diálogo Fuente ...................................................................................
REDIMENSIONAR UN COMPONENTE .........................................................
TEMPORIZADORES .........................................................................................
EJERCICIOS RESUELTOS ...............................................................................
EJERCICIOS PROPUESTOS.............................................................................

XI

196 
196 
197 
198 
198 
200 
201 
201 
202 
203 
203 
207 
208 
210 
211 
213 
216 
217 
220 
221 
222 
223 
227 
238

CAPÍTULO 7. TABLAS Y ÁRBOLES ................................................................ 241 
TABLAS .............................................................................................................
Arquitectura de un control DataGridView .....................................................
Construir una tabla .........................................................................................
Añadir las columnas a la tabla .......................................................................
Iniciar la tabla.................................................................................................
Tamaño de las celdas .....................................................................................
Acceder al valor de la celda seleccionada ......................................................
ÁRBOLES...........................................................................................................
Arquitectura de un árbol ................................................................................
Construir un árbol ..........................................................................................
Añadir nodos a un árbol .................................................................................
Imágenes para los nodos del árbol .................................................................
Iniciar el árbol ................................................................................................
Acceder al nodo seleccionado ........................................................................
Recorrer todos los nodos del árbol .................................................................

241 
243 
244 
245 
246 
252 
253 
254 
255 
255 
256 
257 
258 
260 
264 

XII

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

Añadir y borrar nodos ....................................................................................
Añadir un nodo .........................................................................................
Borrar el nodo seleccionado......................................................................
Borrar todos los nodos excepto la raíz ......................................................
Personalizar el aspecto de un árbol ................................................................
VISTAS DE UNA LISTA...................................................................................
Personalizar el aspecto de una vista ...............................................................
La colección Columns ....................................................................................
Elemento de la lista ........................................................................................
La colección Items .........................................................................................
Un ejemplo con ListView, TreeView y SplitContainer .................................
EJERCICIOS RESUELTOS ...............................................................................
EJERCICIOS PROPUESTOS.............................................................................

264 
265 
268 
268 
269 
269 
270 
271 
272 
273 
273 
276 
292

CAPÍTULO 8. DIBUJAR Y PINTAR .................................................................. 293 
SERVICIOS DE GDI+........................................................................................
OBJETOS DE DIBUJO BÁSICOS ....................................................................
Objeto Graphics .............................................................................................
Objeto Color...................................................................................................
Objeto Pen ......................................................................................................
Objeto Brush ..................................................................................................
Objeto Point ...................................................................................................
Objeto Rectangle ............................................................................................
Objeto Font ....................................................................................................
Objeto GraphicsPath ......................................................................................
MÉTODOS DE DIBUJO ....................................................................................
Líneas y rectángulos.......................................................................................
Elipses y arcos ................................................................................................
Tartas..............................................................................................................
Polígonos........................................................................................................
Curvas flexibles..............................................................................................
Trazados .........................................................................................................
Regiones .........................................................................................................
GRÁFICOS PERSISTENTES ............................................................................
SISTEMAS DE COORDENADAS Y TRANSFORMACIONES ......................
Tipos de sistemas de coordenadas..................................................................
Transformaciones de color .............................................................................
MOSTRAR IMÁGENES ....................................................................................
Mapas de bits .................................................................................................
Cargar y mostrar un mapa de bits ..................................................................
Intercambiar imágenes a través del portapapeles ...........................................

295 
296 
298 
299 
300 
301 
302 
302 
303 
304 
304 
304 
305 
306 
306 
307 
308 
308 
311 
313 
317 
318 
320 
320 
322 
327 

CONTENIDO

XIII

CAMBIAR LA FORMA DEL PUNTERO DEL RATÓN ................................. 329 
EJERCICIOS RESUELTOS ............................................................................... 330 
EJERCICIOS PROPUESTOS............................................................................. 340
CAPÍTULO 9. INTERFAZ PARA MÚLTIPLES DOCUMENTOS ................. 343 
CREACIÓN DE UNA APLICACIÓN MDI.......................................................
Organizar los formularios hijo .......................................................................
EDITOR DE TEXTO MDI .................................................................................
Formulario padre ............................................................................................
Formulario hijo ..............................................................................................
Vincular código con los controles ..................................................................
Iniciar y finalizar la aplicación..................................................................
Nuevo documento .....................................................................................
Abrir un documento ..................................................................................
Guardar un documento ..............................................................................
Guardar como............................................................................................
Imprimir un documento ............................................................................
Cortar, copiar y pegar ...............................................................................
Recordar las ediciones reversibles ............................................................
Barras de herramientas y de estado ...........................................................
Menú Ventana ...........................................................................................
Selección actual del texto..........................................................................
El documento ha cambiado .......................................................................
Operaciones de arrastrar y soltar ...............................................................
EJERCICIOS RESUELTOS ...............................................................................
EJERCICIOS PROPUESTOS.............................................................................

344 
347 
348 
348 
350 
352 
353 
353 
354 
355 
356 
357 
359 
360 
361 
362 
363 
365 
366 
366 
371

CAPÍTULO 10. CONSTRUCCIÓN DE CONTROLES ......................................... 373 
REUTILIZACIÓN DE CONTROLES EXISTENTES .......................................
Control TextBox extendido ............................................................................
Clasificación de las propiedades de un control ..............................................
CONTROLES DE USUARIO ............................................................................
Construir el control de usuario .......................................................................
Añadir propiedades ...................................................................................
Añadir métodos .........................................................................................
Añadir eventos ..........................................................................................
Opciones fecha-hora alarma o actual ........................................................
Verificar el control de usuario........................................................................
EJERCICIOS RESUELTOS ...............................................................................
EJERCICIOS PROPUESTOS.............................................................................

373 
374 
379 
379 
380 
381 
382 
383 
383 
384 
386 
389

XIV

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

CAPÍTULO 11. PROGRAMACIÓN CON HILOS ............................................ 391 
ESPACIO DE NOMBRES System.Threading ...................................................
Clase Thread ..................................................................................................
Resumen de los métodos y propiedades de Thread........................................
Estados de un hilo ..........................................................................................
ACCESO A CONTROLES DESDE HILOS ......................................................
Delegados .......................................................................................................
Componente BackgroundWorker...................................................................
Ejecutar una tarea de forma asíncrona ......................................................
Notificar el progreso a la interfaz gráfica del usuario ...............................
Recuperar el estado después de la finalización de la tarea ........................
Cancelación anticipada .............................................................................
MECANISMOS DE SINCRONIZACIÓN .........................................................
Objetos de sincronización ..............................................................................
Secciones críticas ......................................................................................
Controladores de espera ............................................................................
DETENER UN HILO DE FORMA CONTROLADA .......................................
EJERCICIOS RESUELTOS ...............................................................................
EJERCICIOS PROPUESTOS.............................................................................

392 
395 
398 
398 
399 
399 
404 
405 
406 
407 
407 
408 
409 
410 
412 
414 
417 
420

PARTE 3. ACCESO A DATOS ............................................... 421
CAPÍTULO 12. ENLACE DE DATOS EN WINDOWS FORMS ..................... 423 
ASPECTOS BÁSICOS .......................................................................................
Enlace de datos manual ..................................................................................
Notificar cuándo cambia una propiedad ........................................................
Enlace de datos con las clases de .NET .........................................................
La clase Binding .......................................................................................
Tipos de enlace .........................................................................................
Componente BindingSource .....................................................................
Notificación de cambios en un enlace de Windows Forms ......................
Crear un enlace .........................................................................................
Enlaces con otros controles..................................................................
Aplicar conversiones............................................................................
ORÍGENES DE DATOS COMPATIBLES CON WINDOWS FORMS ...........
Enlace a colecciones de objetos .....................................................................
List ............................................................................................................
BindingList ...............................................................................................
BindingSource ..........................................................................................
ACCEDIENDO A LOS DATOS ........................................................................

423 
423 
427 
430 
431 
432 
432 
433 
433 
435 
435 
439 
442 
442 
447 
451 
454 

CONTENIDO

Ventana de orígenes de datos .........................................................................
Vinculación maestro-detalle...........................................................................
Operaciones con los datos ..............................................................................
Elemento actual .........................................................................................
Navegar .....................................................................................................
Ordenación, filtrado y búsqueda ...............................................................
BindingListView ............................................................................................
Elemento actual de la vista........................................................................
Ordenar .....................................................................................................
Filtrar ........................................................................................................
Buscar .......................................................................................................
Datos introducidos por el usuario ..................................................................
Error en los datos ......................................................................................
Validación .................................................................................................
Datos que no necesitan validación ............................................................

XV
457 
461 
465 
465 
466 
469 
471 
472 
473 
474 
474 
475 
477 
478 
479

CAPÍTULO 13. ACCESO A UNA BASE DE DATOS ....................................... 487 
SQL .....................................................................................................................
Crear una base de datos ..................................................................................
Crear una tabla ...............................................................................................
Escribir datos en la tabla ................................................................................
Modificar datos de una tabla ..........................................................................
Borrar registros de una tabla ..........................................................................
Seleccionar datos de una tabla .......................................................................
Crear una base de datos ..................................................................................
Base de datos Microsoft Access................................................................
Base de datos Microsoft SQL Server ........................................................
ADO.NET ...........................................................................................................
Componentes de ADO.NET...........................................................................
Conjunto de datos...........................................................................................
Proveedor de datos .........................................................................................
Objeto conexión ........................................................................................
Objeto orden .............................................................................................
Objeto lector de datos ...............................................................................
Adaptador de datos ...................................................................................
Modos de conexión ........................................................................................
Probando una conexión ..................................................................................
ACCESO CONECTADO A UNA BASE DE DATOS ......................................
ATAQUES DE INYECCIÓN DE CÓDIGO SQL ..............................................
Órdenes parametrizadas .................................................................................
Procedimientos almacenados .........................................................................

488 
488 
488 
490 
490 
491 
491 
493 
493 
495 
496 
497 
498 
500 
501 
503 
503 
504 
506 
508 
509 
512 
516 
517 

XVI

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

TRANSACCIONES ............................................................................................
Transacción implícita TransactionScope .......................................................
Transacciones explícitas.................................................................................
ESCRIBIR CÓDIGO INDEPENDIENTE DEL PROVEEDOR ........................
CONSTRUIR COMPONENTES DE ACCESO A DATOS...............................
Capa de presentación .....................................................................................
Operaciones contra la base de datos...............................................................
Objetos de negocio .........................................................................................
Capa de acceso a datos ...................................................................................
Capa de lógica de negocio .............................................................................
Diseño de la capa de presentación .................................................................
Lógica de interacción con la capa de presentación ........................................
Desacoplar la IU del resto de la aplicación ....................................................
Adaptar la colección de objetos ................................................................
Capa de lógica de negocio ........................................................................
Lógica de interacción con la capa de presentación ...................................
Validación ......................................................................................................
ACCESO DESCONECTADO A UNA BASE DE DATOS ...............................
ASISTENTES DE VISUAL STUDIO ................................................................
Crear la infraestructura para el acceso a la base de datos ..............................
Crear el conjunto de datos ..............................................................................
Agregar un control rejilla al formulario .........................................................
Código subyacente .........................................................................................
Asistente para configurar orígenes de datos...................................................
VISTA EN DETALLE DEL CONJUNTO DE DATOS ....................................
Diseño del formulario ....................................................................................
Vincular las cajas de texto con el conjunto de datos ......................................
Controles de navegación ................................................................................
Añadir, borrar y buscar datos .........................................................................
CONTROL BindingNavigator ............................................................................
DISEÑO MAESTRO-DETALLE .......................................................................
EJERCICIOS RESUELTOS ...............................................................................
EJERCICIOS PROPUESTOS.............................................................................

518 
519 
523 
525 
531 
533 
533 
535 
537 
541 
542 
544 
547 
548 
551 
554 
555 
555 
559 
561 
566 
567 
568 
570 
574 
576 
577 
579 
582 
586 
587 
596 
616

CAPÍTULO 14. LINQ ............................................................................................ 619 
RECURSOS DEL LENGUAJE COMPATIBLES CON LINQ..........................
Declaración implícita de variables locales .....................................................
Matrices de tipos definidos de forma implícita ..............................................
Tipos anónimos ..............................................................................................
Propiedades autoimplementadas ....................................................................
Iniciadores de objetos y colecciones ..............................................................

619 
620 
620 
620 
621 
621 

CONTENIDO

Métodos extensores ........................................................................................
Expresiones lambda .......................................................................................
El delegado Func(Of T, TResu)......................................................................
Operadores de consulta ..................................................................................
Árboles de expresiones lambda ......................................................................
EXPRESIONES DE CONSULTA......................................................................
Compilación de una expresión de consulta ....................................................
Sintaxis de las expresiones de consulta ..........................................................
Cláusula Group .........................................................................................
Productos cartesianos ................................................................................
Cláusula Join .............................................................................................
Cláusula Into .............................................................................................
Cláusula Let ..............................................................................................
PROVEEDORES DE LINQ ...............................................................................
ENTITY FRAMEWORK ...................................................................................
MARCO DE ENTIDADES DE ADO.NET ........................................................
Consultar un modelo de objetos .....................................................................
ACCESO A UNA BASE DE DATOS ................................................................
Conectarse a la base de datos .........................................................................
Generar el modelo de entidades .....................................................................
Las clases de entidad y el contexto de objetos ...............................................
Propiedades de navegación ............................................................................
Mostrar datos en una interfaz gráfica .............................................................
Una aplicación con interfaz gráfica................................................................
Vincular controles con el origen de datos ......................................................
Proveedor de datos .........................................................................................
Filtros .............................................................................................................
Contextos de corta duración ...........................................................................
REALIZAR CAMBIOS EN LOS DATOS .........................................................
Modificar filas en la base de datos .................................................................
Insertar filas en la base de datos .....................................................................
Borrar filas en la base de datos ......................................................................
Problemas de concurrencia ............................................................................
El seguimiento de cambios.............................................................................
CODE FIRST: UN NUEVO MODELO DE TRABAJO ....................................
Aplicando Code First .....................................................................................
Definir el modelo de entidades .................................................................
Definir el contexto de objetos ...................................................................
Anotaciones en datos y convenciones predeterminadas ...........................
Cadena de conexión ..................................................................................
Generar la base de datos............................................................................
Validación de entidades .................................................................................
Atributos de anotación de datos ................................................................

XVII
622 
623 
625 
626 
629 
632 
635 
637 
637 
638 
638 
639 
640 
641 
642 
643 
647 
651 
652 
652 
661 
664 
666 
667 
668 
669 
673 
675 
675 
680 
682 
685 
689 
695 
700 
702 
702 
703 
704 
705 
707 
710 
710 

XVIII

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

Interfaz fluida ............................................................................................
Code First desde una base de datos existente.................................................
Cadena de conexión ..................................................................................
Contexto de objetos...................................................................................
El modelo de entidades .............................................................................
Acceder a los datos ...................................................................................
EJERCICIOS RESUELTOS ...............................................................................
EJERCICIOS PROPUESTOS.............................................................................

712 
713 
715 
715 
716 
717 
718 
720

PARTE 4. APLICACIONES PARA INTERNET .................. 721
CAPÍTULO 15. ASP.NET ..................................................................................... 723 
ASP.NET .............................................................................................................
Conceptos básicos de ASP.NET ....................................................................
Páginas web ASP.NET ..................................................................................
Controles HTML ............................................................................................
Controles de servidor web..............................................................................
Presentación del texto ...............................................................................
Controles de entrada .................................................................................
Envío y devolución ...................................................................................
Exploración ...............................................................................................
Controles de diseño ...................................................................................
Selección de fechas ...................................................................................
Controles con enlaces a datos ...................................................................
Controles de validación.............................................................................
Un ejemplo de diseño de una página web ASP.NET .....................................
Software para el desarrollo de aplicaciones ASP.NET ..................................
Componentes de una página web ASP.NET ..................................................
¿Cómo se publica una aplicación web? .........................................................
Crear un directorio virtual .........................................................................
Convertir la aplicación en una aplicación web de IIS ...............................
Seguridad asociada con una carpeta..........................................................
Modelo de ejecución de una página web ASP.NET ......................................
Lógica de negocio ..........................................................................................
Enlaces de datos en ASP.NET .......................................................................
Expresiones de enlace de datos .................................................................
Controles de lista enlazados a datos ..........................................................
Modelo de enlace de ASP.NET ................................................................
GridView .............................................................................................
Seleccionar datos .................................................................................
Actualizar y eliminar datos ..................................................................

725 
726 
727 
728 
729 
730 
730 
732 
733 
733 
733 
734 
734 
735 
737 
739 
741 
742 
744 
746 
747 
749 
753 
753 
754 
757 
759 
761 
762 

CONTENIDO

XIX

Insertar datos (FormView) ................................................................... 765 
Estado del modelo y validación ........................................................... 767 
Asistente para publicar un proyecto web ASP.NET ...................................... 768
CAPÍTULO 16. FORMULARIOS WEB ............................................................. 773 
APLICACIÓN WEB ASP.NET ..........................................................................
Crear la capa de acceso a datos ......................................................................
Añadir un nuevo formulario web ...................................................................
Descripción de un formulario web ASP.NET ...........................................
Agregar controles y texto a la página .............................................................
Ciclo de vida de una página ...........................................................................
Modelo de eventos de ASP.NET ...................................................................
Añadir los controladores de eventos ..............................................................
Obtener acceso a la base de datos ..................................................................
CONTROLES DE VALIDACIÓN .....................................................................
HERRAMIENTA DE PRECOMPILACIÓN ASP.NET ....................................
PROCESAMIENTO DE FORMULARIOS .......................................................
Formato de la petición HTTP .........................................................................
Petición HTTP get.....................................................................................
Petición HTTP post ...................................................................................
Respuestas en el protocolo HTTP ..................................................................
Contexto de un formulario web......................................................................
Redireccionar una solicitud a otra URL .........................................................
ESTADO DE UNA PÁGINA ASP.NET ............................................................
Administración de estado en el cliente...........................................................
Cookies .....................................................................................................
Cadenas de consulta ..................................................................................
Campos de formulario ocultos ..................................................................
Estado de vista ..........................................................................................
Administración de estado en el servidor ........................................................
Estado de aplicación .................................................................................
Estado de sesión ........................................................................................
Bases de datos ...........................................................................................
MEJORANDO EL RENDIMIENTO EN EL SERVIDOR.................................
Almacenamiento en la caché de resultados ....................................................
Configurar el almacenamiento en caché a nivel de página .......................
Actualización dinámica de fragmentos de una página en caché ...............
Configurar el almacenamiento en caché por programación ......................
Almacenamiento en caché de datos procedentes de SQL Server ................
Reducir la información hacia y desde el servidor ..........................................
CONTROLES DE SERVIDOR COMO ORIGEN DE DATOS.........................

774 
778 
780 
781 
782 
784 
787 
787 
790 
792 
796 
798 
798 
799 
800 
801 
801 
803 
803 
804 
804 
806 
807 
807 
809 
810 
810 
811 
812 
812 
813 
814 
815 
816 
817 
819 

XX

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

SQL y desarrollo web ....................................................................................
Control SqlDataSource .............................................................................
Responder a los eventos ............................................................................
LINQ y desarrollo web ..................................................................................
Control EntityDataSource .........................................................................
Responder a los eventos ............................................................................
Generar la consulta Select mediante código .............................................
Realizar cambios en los datos ...................................................................
Actualizar y eliminar filas en la base de datos .....................................
Controlar los errores en una página ASP.NET ....................................
Insertar filas en la base de datos ..........................................................
MODELO DE ENLACE DE ASP.NET .............................................................
Realizar cambios en los datos ...................................................................
Actualizar y eliminar filas en la base de datos .....................................
Controlar los errores en una página ASP.NET ....................................
Insertar filas en la base de datos ..........................................................
Capa de la lógica de negocio..........................................................................
Paginación, ordenación y filtrado ..................................................................
EJERCICIOS PROPUESTOS.............................................................................

820 
822 
826 
828 
829 
835 
836 
838 
839 
841 
841 
847 
852 
852 
855 
855 
860 
863 
869

CAPÍTULO 17. SERVICIOS WEB ...................................................................... 871 
Integrar un servicio web en una aplicación ....................................................
SERVICIOS WCF ..............................................................................................
MODELO DE PROGRAMACIÓN DE WCF ....................................................
Implementar un servicio WCF .......................................................................
Definir un contrato ....................................................................................
Configuración del servicio WCF ..............................................................
Implementar un cliente WCF .........................................................................
Configuración del cliente WCF ................................................................
Obtener acceso al servicio web .................................................................
Ejecución asíncrona ..................................................................................
Seguridad en WCF .........................................................................................
SERVICIOS WEB Y LINQ ................................................................................
Arquitectura de N capas lógicas y N niveles físicos ......................................
Crear la base de datos.....................................................................................
Crear el servicio WCF....................................................................................
Cliente WCF ..................................................................................................
Llenar la lista.............................................................................................
Mostrar datos ............................................................................................
Actualizar datos ........................................................................................
Cambiar foto .............................................................................................

872 
873 
874 
875 
876 
882 
884 
888 
888 
890 
893 
894 
895 
896 
897 
904 
907 
908 
909 
909 

CONTENIDO

XXI

Agregar datos ............................................................................................
Borrar datos...............................................................................................
Errores inesperados ...................................................................................
EJERCICIOS PROPUESTOS.............................................................................

910 
911 
911 
912

CAPÍTULO 18. SEGURIDAD DE APLICACIONES ASP.NET ...................... 919 
ARQUITECTURA ASP.NET .............................................................................
CICLO DE VIDA DE UNA APLICACIÓN ASP.NET .....................................
GRUPOS DE APLICACIONES EN IIS .............................................................
AUTENTICACIÓN DE WINDOWS .................................................................
AUTORIZACIÓN ...............................................................................................
SUPLANTACIÓN DE IDENTIDAD .................................................................
AUTENTICACIÓN MEDIANTE FORMULARIOS .........................................
CONTROLES PARA INICIO DE SESIÓN .......................................................
SERVICIO DE SUSCRIPCIONES.....................................................................
SEGURIDAD EN LA TRANSMISIÓN DE DATOS ........................................
Criptografía simétrica.....................................................................................
Criptografía asimétrica ...................................................................................
AUTENTICACIÓN USANDO CERTIFICADOS .............................................
Instalar un certificado SSL en IIS 7.0 o superior ...........................................
Certificado de cliente rechazado ....................................................................

920 
921 
922 
923 
930 
932 
933 
938 
951 
958 
959 
959 
961 
963 
968

CAPÍTULO 19. PÁGINAS MAESTRAS ............................................................. 969 
ESTRUCTURA DE UNA PÁGINA MAESTRA ...............................................
Controles de usuario web ...............................................................................
Mejorar el aspecto de la interfaz ....................................................................
Temas y máscaras en ASP.NET .....................................................................
Perfiles ...........................................................................................................
EJERCICIOS RESUELTOS ...............................................................................
Base de datos ..................................................................................................
Cliente web ....................................................................................................

969 
974 
979 
980 
983 
987 
988 
992

CAPÍTULO 20. AJAX ........................................................................................... 1001 
FUNDAMENTOS DE AJAX ............................................................................. 1003 
XMLHttpRequest ........................................................................................... 1004 
AJAX con ASP.NET...................................................................................... 1012 
GENERACIÓN DE CÓDIGO JAVASCRIPT ................................................... 1014 
Fichero JavaScript .......................................................................................... 1015 

XXII

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

Vincular un evento con una función JavaScript ............................................. 1015 
Inyectar código JavaScript desde el lado del servidor ................................... 1017 
ASP.NET AJAX ................................................................................................. 1018 
Crear un sitio web ASP.NET AJAX ................................................................... 1019 
Clase ScriptManager ...................................................................................... 1020 
Clases ScriptManager y ScriptManagerProxy ............................................... 1028 
Clase UpdatePanel ......................................................................................... 1028 
Clase AsyncPostBackTrigger......................................................................... 1030 
Clase UpdateProgress..................................................................................... 1031 
Cancelar una llamada asíncrona ..................................................................... 1033 
Clase Timer .................................................................................................... 1034 
Servicios web ................................................................................................. 1034 
Métodos de página ......................................................................................... 1038 
EJERCICIOS RESUELTOS ............................................................................... 1040

PARTE 5. ACERCA DEL MATERIAL ADICIONAL
Y DE LOS APÉNDICES ........................................................ 1043

HERRAMIENTAS DE DESARROLLO.............................................................. 1045 
PÁGINAS WEB ...................................................................................................... 1061 
INTERNACIONALIZACIÓN .............................................................................. 1093 
.NET PARA LINUX ............................................................................................... 1103 
ÍNDICE ................................................................................................................... 1105

PRÓLOGO
Visual Basic es hoy el lenguaje de programación más popular del mundo. Desde
que Microsoft liberó Visual Basic 1.0 en 1991 han tenido lugar muchos cambios.
Visual Basic 1.0 revolucionó la forma de desarrollar software para Windows;
desmitificó el proceso de desarrollo de aplicaciones con interfaz gráfica de usuario y abrió este tipo de programación a las masas. En sus posteriores versiones,
Visual Basic ha continuado proporcionando nuevas características que facilitaron
la creación de aplicaciones para Windows cada vez más potentes; por ejemplo, la
versión 3.0 introdujo el control de datos para facilitar el acceso a bases de datos, y
la versión 4.0 mejoró y potenció este acceso con los objetos DAO. Con la aparición de Windows 95, Microsoft liberó Visual Basic 4.0 que abrió la puerta al
desarrollo de aplicaciones de 32 bits y a la creación de DLL. La versión 5.0 mejoró la productividad con la incorporación de la ayuda inteligente y la introducción
de los controles ActiveX. Posteriormente la versión 6.0 nos introdujo en la programación de Internet con las aplicaciones DHTML y el objeto WebClass. Después dispusimos de Visual Basic .NET que vino a revolucionar el mundo de las
comunicaciones permitiendo escribir aplicaciones escalables para Internet. Siguieron Visual Basic 2005, 2008, 2010 y ahora Visual Basic 2012, una evolución del
lenguaje Visual Basic, que se diseñó para generar aplicaciones con seguridad de
tipos y orientadas a objetos de manera productiva. Esta generación de Visual Basic continúa la tradición de ofrecer una manera rápida y fácil de crear aplicaciones
basadas en .NET Framework.
Visual Basic .NET, después Visual Basic 2005, 2008, 2010 y ahora Visual
Basic 2012, cambian la idea de programar de las versiones iniciales. Ahora se requiere una programación orientada a objetos, lo que obligará al desarrollador a
programar de forma ordenada, con unas reglas metodológicas de programación
análogas a las de otros lenguajes de programación orientados a objetos como C++,
C# o Java por citar algunos de los más utilizados.

XXIV

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

La palabra “Visual” hace referencia, desde el lado del diseño, al método que
se utiliza para crear la interfaz gráfica de usuario si se dispone de la herramienta
adecuada (con Microsoft Visual Studio se utiliza el ratón para arrastrar y colocar
los objetos prefabricados en el lugar deseado dentro de un formulario) y desde el
lado de la ejecución, al aspecto gráfico que toman los objetos cuando se ejecuta el
código que los crea, objetos que formarán la interfaz gráfica que el usuario de la
aplicación utiliza para acceder a los servicios que ésta ofrece. La palabra “Basic”
hace referencia al lenguaje BASIC (Beginners All-Purpose Symbolic Instruction
Code), un lenguaje utilizado por más programadores que ningún otro lenguaje en
la historia de la informática. Visual Basic ha evolucionado a partir del lenguaje
BASIC original y ahora está soportado por una biblioteca orientada a objetos directamente relacionada con la interfaz gráfica de Windows. Y “NET” hace referencia al ámbito donde operarán nuestras aplicaciones web (Network - red).
Resumiendo, Visual Basic es un lenguaje orientado a objetos seguro y elegante que permite a los desarrolladores construir un amplio rango de aplicaciones
seguras y robustas que se ejecutan sobre .NET Framework. .NET Framework (que
incluye entre otras cosas la biblioteca básica de .NET y el compilador Visual Basic) junto con otros componentes de desarrollo, como ASP.NET (formularios web
y servicios web) y ADO.NET, forman un paquete de desarrollo denominado Microsoft Visual Studio que podemos utilizar para crear aplicaciones Windows tradicionales (aplicaciones de escritorio que muestren una interfaz gráfica al usuario)
y aplicaciones para la Web. Para ello, este paquete proporciona un editor de código avanzado, diseñadores de interfaces de usuario apropiados, depurador integrado y muchas otras utilidades para facilitar un desarrollo rápido de aplicaciones.

Para quién es este libro
Este libro está pensado para aquellas personas que quieran aprender a desarrollar
aplicaciones que muestren una interfaz gráfica al usuario, aplicaciones para acceso a bases de datos y para Internet (páginas web). Para ello, ¿qué debe hacer el
lector? Pues simplemente leer ordenadamente los capítulos del libro, resolviendo
cada uno de los ejemplos que en ellos se detallan.
Evidentemente, no vamos a enseñar a programar aquí, por eso es necesario
tener algún tipo de experiencia con un lenguaje de programación orientado a objetos (Visual Basic, C#, Java, etc., son lenguajes orientados a objetos). Haber programado en .NET y con Visual Basic sería lo ideal, así como tener conocimientos
de HTML y XML. Estos requisitos son materia de mis otros libros Microsoft Visual Basic - Lenguaje y aplicaciones y Microsoft Visual Basic - Curso de programación, ambos editados también por RA-MA y Alfaomega Grupo Editor.

PRÓLOGO

XXV

Microsoft Visual Basic - Lenguaje y aplicaciones se centra en la programación básica: tipos, sentencias, matrices, métodos, ficheros, etc., y hace una introducción a las interfaces gráficas, a las bases de datos y a las aplicaciones para
Internet, y Microsoft Visual Basic - Curso de programación cubre la programación básica (expuesta en menor medida en el libro anterior) y la programación
orientada a objetos (POO) en detalle: clases, clases derivadas, interfaces, espacios
de nombres, excepciones, etc.; después, utilizando la POO, añade otros temas como estructuras dinámicas de datos, algoritmos de uso común, hilos (programación
concurrente), etc. Éste sí que es un libro de programación con Visual Basic en toda su extensión. Puede ver más detalles de cada uno de ellos en mi web:
www.fjceballos.es.

Cómo está organizado el libro
El libro se ha estructurado en 20 capítulos más algunos apéndices que a continuación se relacionan. Los capítulos 1 y 2 nos introducen en .NET y en el desarrollo
de aplicaciones de escritorio. Los capítulos 3 al 11 nos enseñan a desarrollar aplicaciones de escritorio que muestran una interfaz de ventanas al usuario. Los capítulos 12 al 14 cubren el enlace a datos, el acceso a bases de datos (ADO.NET), el
lenguaje de consultas integrado (LINQ) y el acceso a bases de datos con Entity
Framework. Y los capítulos 15 al 20 nos enseñan cómo desarrollar aplicaciones
para Internet (ASP.NET) a base de formularios web, servicios web WCF y AJAX.
CAPÍTULO 1. INTRODUCCIÓN A MICROSOFT .NET
CAPÍTULO 2. MI PRIMERA APLICACIÓN
CAPÍTULO 3. APLICACIÓN WINDOWS FORMS
CAPÍTULO 4. INTRODUCCIÓN A WINDOWS FORMS
CAPÍTULO 5. MENÚS Y BARRAS DE HERRAMIENTAS
CAPÍTULO 6. CONTROLES Y CAJAS DE DIÁLOGO
CAPÍTULO 7. TABLAS Y ÁRBOLES
CAPÍTULO 8. DIBUJAR Y PINTAR
CAPÍTULO 9. INTERFAZ PARA MÚLTIPLES DOCUMENTOS
CAPÍTULO 10. CONSTRUCCIÓN DE CONTROLES
CAPÍTULO 11. PROGRAMACIÓN CON HILOS
CAPÍTULO 12. ENLACE DE DATOS EN WINDOWS FORMS
CAPÍTULO 13. ACCESO A UNA BASE DE DATOS
CAPÍTULO 14. LINQ
CAPÍTULO 15. ASP.NET
CAPÍTULO 16. FORMULARIOS WEB
CAPÍTULO 17. SERVICIOS WEB
CAPÍTULO 18. SEGURIDAD DE APLICACIONES ASP.NET
CAPÍTULO 19. PÁGINAS MAESTRAS
CAPÍTULO 20. AJAX
APÉNDICE A. HERRAMIENTAS DE DESARROLLO
APÉNDICE B. PÁGINAS WEB
APÉNDICE C. INTERNACIONALIZACIÓN
APÉNDICE D. .NET PARA LINUX

XXVI

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

Qué se necesita para utilizar este libro
Este libro ha sido escrito utilizando el paquete Microsoft .NET Framework Software Development Kit (SDK) versión 4.5 que forma parte del entorno de desarrollo
Microsoft Visual Studio 2012 que incluye todo lo necesario para escribir, construir,
verificar y ejecutar aplicaciones .NET. Por lo tanto, basta con que instale en su máquina Microsoft Visual Studio 2012, o superior, en cualquiera de sus versiones o,
como alternativa, descargue desde http://www.microsoft.com/express/ los paquetes
Visual Studio Express 2012 for Windows Desktop y for Web e instálelos (opcionalmente puede instalar también SQL Server 2012 Express, caso del autor).
Nota: para probar las aplicaciones web se recomienda instalar el servidor de
aplicaciones IIS (Internet Information Services) que incluye Windows (Inicio >
Panel de control > Agregar y quitar programas > Windows). Esto tiene que hacerlo antes de instalar Microsoft Visual Studio 2012 o Visual Studio Express 2012
for Web.

Sobre los ejemplos del libro
El código fuente de todos los ejemplos del libro podrá descargarse, según se indica en los apéndices, de la web www.ra-ma.es desde la página web correspondiente
al libro.

Agradecimientos
He recibido ayuda de algunas personas durante la preparación de este libro y, por
ello, les estoy francamente agradecido. También deseo expresar mi agradecimiento a Microsoft Ibérica por poner a mi disposición, en particular, y de todos los lectores, en general, el software que el estudio de esta obra requiere.
Francisco Javier Ceballos Sierra
http://www.fjceballos.es/

PARTE






Introducción

Introducción a Microsoft .NET

Mi primera aplicación

PARTE






Interfaces gráficas

Aplicación Windows Forms

Introducción a Windows Forms

Menús y barras de herramientas

Controles y cajas de diálogo

Tablas y árboles

Dibujar y pintar

Interfaz para múltiples documentos

Construcción de controles

Programación con hilos

PARTE






Acceso a datos

Enlace de datos en Windows Forms

Acceso a una base de datos

LINQ

PARTE






Aplicaciones para Internet
 ASP.NET
 Formularios web
 Servicios web
 Seguridad de aplicaciones ASP.NET
 Páginas maestras
 AJAX

PARTE






Acerca del material adicional
y de los apéndices
 Herramientas de desarrollo
 Páginas web
 Internacionalización
 .NET para Linux
 Índice

APÉNDICE A
 F.J.Ceballos/RA-MA

HERRAMIENTAS DE DESARROLLO
Cuando se utiliza un entorno de desarrollo integrado (EDI), lo primero que hay
que hacer una vez instalado es asegurarse de que las rutas donde se localizan las
herramientas, las bibliotecas, la documentación y los ficheros fuente hayan sido
establecidos; algunos EDI sólo requieren la ruta donde se instaló el compilador.
Este proceso normalmente se ejecuta automáticamente durante el proceso de instalación de dicho entorno. Si no es así, el entorno proporcionará algún menú con
las órdenes apropiadas para realizar dicho proceso. Por ejemplo, en los EDI que se
presentan a continuación las rutas a las que nos referimos quedan establecidas durante la instalación de los mismos.

VISUAL STUDIO
Visual Studio proporciona una variedad de herramientas tanto para desarrolladores individuales como para equipos de desarrollo.
http://www.microsoft.com/express/

Ediciones Visual Studio Express
Es la nueva línea de productos que expanden Visual Studio ofreciendo herramientas ligeras y sencillas de aprender y de usar para aficionados, entusiastas y aprendices que quieren crear sitios Web y aplicaciones para Windows. Su descarga es
gratuita y dependiendo del tipo de aplicación a desarrollar optaremos por una u
otra herramienta de desarrollo de las siguientes:

Visual Studio Express for Web.
Visual Studio Express for Windows 8.

1046


ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

Visual Studio Express for Windows Desktop.
Visual Studio Express for Windows Phone.
Visual Studio Team Foundation Server Express.

Ediciones de Visual Studio para profesionales
Visual Studio en sus versiones professional, premium y ultimate, ofrece una flexible herramienta de desarrollo para desarrolladores de aplicaciones de línea de
negocio o programadores ocasionales que estén construyendo aplicaciones móviles, basadas en Windows o para la Web, soluciones sobre Microsoft Office System utilizando Excel, Word e InfoPath, y con herramientas de software de ciclo de
vida productivas, integradas y extensibles que permiten a las empresas reducir la
complejidad en la creación de soluciones orientadas a servicios. La utilización de
estas versiones requiere comprar una licencia.

APLICACIÓN DE CONSOLA
En el capítulo 2 vimos una introducción al desarrollo de aplicaciones con interfaz
gráfica de usuario, pero no abordamos el desarrollo de aplicaciones de consola
que en ocasiones puede ser útil. Veamos un ejemplo a continuación utilizando
cualquiera de las ediciones de Visual Studio.
Para editar y ejecutar el programa HolaMundo utilizando cualquiera de las
ediciones de Visual Studio, los pasos a seguir son los siguientes:
1. Partiendo de la página de inicio de MS Visual Visual Basic Express, hacemos
clic en Nuevo proyecto... para crear un proyecto nuevo, o bien ejecutamos la
orden Archivo > Nuevo proyecto. Esta acción hará que se visualice una ventana que mostrará los tipos de plantillas que puede utilizar; la elección de una
u otra dependerá del tipo de aplicación que deseemos construir. La figura siguiente muestra esta ventana:

APÉNDICE A: ENTORNOS DE DESARROLLO

1047

Para que la ventana anterior muestre la lista Ubicación y la caja Nombre de la
solución tiene que habilitar, si no lo está, la opción “Guardar nuevos proyectos al crearlos”. Para ello, ejecute la orden Herramientas > Opciones > Proyectos y soluciones y seleccione esta opción en la ventana que se visualiza:

Para nuestro ejemplo, elegimos la plantilla “Aplicación de consola”. Después,
especificamos el nombre del proyecto y su ubicación; observe que el proyecto
será creado en una carpeta con el mismo nombre. A continuación pulsamos el
botón Aceptar y obtendremos el esqueleto del proyecto de acuerdo con la
plantilla seleccionada. Para cambiar el nombre asignado al fichero .vb, hacemos clic sobre Module1.vb y utilizando el botón derecho del ratón, seleccio-

1048

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

namos del menú contextual que se visualiza la orden Cambiar nombre; también podemos hacer este cambio a través de la ventana de propiedades.

Si necesitáramos añadir un fichero nuevo a este proyecto, haríamos clic con el
botón derecho del ratón sobre el nombre del proyecto y seleccionaríamos
Agregar > Nuevo elemento. Después, elegiríamos el tipo de elemento que
deseamos añadir y, finalmente, haríamos clic en el botón Agregar.
2. A continuación editamos el código que compone el programa. Después, antes
de compilar la aplicación, podemos verificar que se trata de una aplicación de
consola: Proyecto > Propiedades de HolaMundo > Aplicación > Tipo de resultado > Aplicación de consola.

APÉNDICE A: ENTORNOS DE DESARROLLO

1049

3. Para compilar el programa, ejecutamos la orden Generar HolaMundo del menú Generar. Finalmente, para ejecutar el programa seleccionamos la orden
Iniciar sin depurar del menú Depurar, o bien pulsamos las teclas Ctrl+F5.
También puede ejecutar el programa seleccionando la orden Iniciar depuración del menú Depurar, o bien pulsando la tecla F5. Los resultados de la
compilación se muestran en la ventana Resultados. La acción de ejecutar el
programa acarrea también su compilación si fuera necesario.

DEPURAR UNA APLICACIÓN
¿Por qué se depura una aplicación? Porque los resultados que estamos obteniendo
con la misma no son correctos y no sabemos por qué. El proceso de depuración
consiste en ejecutar la aplicación paso a paso, indistintamente por sentencias o por
métodos, con el fin de observar el flujo seguido durante su ejecución, así como los
resultados intermedios que se van sucediendo, con la finalidad de detectar las
anomalías que producen un resultado final erróneo.
Por ejemplo, para depurar una aplicación utilizando el depurador del entorno
de desarrollo de Visual Studio, ejecute la orden Depurar > Paso por instrucciones
y utilice las órdenes del menú Depurar o los botones correspondientes de la barra
de herramientas (para saber el significado de cada botón, ponga el puntero del ratón sobre cada uno de ellos).

1050

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

De forma resumida, las órdenes disponibles para depurar una aplicación son
las siguientes:

Iniciar o F5. Inicia la ejecución de la aplicación en modo depuración hasta
encontrar un punto de parada o hasta el final si no hay puntos de parada.

Alternar puntos de interrupción o F9. Pone o quita un punto de parada en la
línea sobre la que está el punto de inserción.

Detener depuración o Mayús+F5. Detiene el proceso de depuración.

Paso a paso por instrucciones o F11. Ejecuta la aplicación paso a paso. Si la
línea a ejecutar coincide con una llamada a un método definido por el usuario,
dicho método también se ejecutará paso a paso.

Paso a paso por procedimientos o F10. Ejecuta la aplicación paso a paso. Si
la línea a ejecutar coincide con una llamada a un método definido por el usuario, dicho método no se ejecutará paso a paso, sino de una sola vez.

Paso a paso para salir o Mayús+F11. Cuando un método definido por el
usuario ha sido invocado para ejecutarse paso a paso, utilizando esta orden se
puede finalizar su ejecución en un solo paso.

Ejecutar hasta el cursor o Ctrl+F10. Ejecuta el código que hay entre la última línea ejecutada y la línea donde se encuentra el punto de inserción.

Inspección rápida o Ctrl+Alt+Q. Visualiza el valor de la variable que está bajo el punto de inserción o el valor de la expresión seleccionada (sombreada).

Para ejecutar la aplicación en un solo paso, seleccione la orden Iniciar sin depurar (Ctrl+F5) del menú Depurar.
Además de la barra de herramientas Depurar, dispone también de la barra de
herramientas Generar reducida que se muestra en la figura siguiente:

Esta barra de herramientas pone a su disposición las órdenes siguientes:

Generar aplicación. Compila la aplicación y genera el fichero ejecutable correspondiente.

APÉNDICE A: ENTORNOS DE DESARROLLO

1051

Generar solución. Compila y genera todos los proyectos que componen la solución.

Cancelar. Detiene el proceso de compilación o de generación del fichero ejecutable.

ARGUMENTOS EN LA LÍNEA DE ÓRDENES
Si ejecuta una aplicación desde el EDI que requiere argumentos en la línea de órdenes, ¿dónde se introducen estos argumentos? Haga clic sobre el nombre del
proyecto con el botón derecho del ratón y seleccione la orden Propiedades. Después, en la ventana que se visualiza, seleccione el panel Depurar y escriba los argumentos según puede observar en la figura:

CONECTAR A LOCALDB O A SQLEXPRESS
El servidor de base de datos que se instala con Visual Studio es diferente dependiendo de la versión de Visual Studio que haya instalado:

Si se utiliza Visual Studio 2010 se creará una base de datos SQL Express.

Si se utiliza Visual Studio 2012 se creará una base de datos LocalDB. Esto no
significa que no pueda utilizar una base de datos SQL Express.

SQL Server Express
SQL Server 2012 Express es el motor de base de datos gratuito, potente, pero sencillo, que se integra perfectamente con el resto de productos Express. Se trata de

1052

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

una versión aligerada de la nueva generación de SQL Server que puede descargar
gratuitamente del sitio web de Microsoft.
Este producto tiene el mismo motor de base de datos que toda la familia SQL
Server y utiliza el mismo lenguaje SQL. Otra característica interesante es la movilidad de las bases de datos de un servidor a otro con XCOPY. Con esta utilidad
podemos mover un fichero MDF de una máquina a otra a cualquier ubicación
dentro de su sistema de ficheros, quedando la base de datos movida lista para trabajar. Para utilizar esta base de datos deberemos hacer uso de la opción AttachDBFilename en la cadena de conexión, según se muestra a continuación:
connectionString="Data Source=.\sqlexpress;Initial Catalog=;
Integrated Security=True;AttachDBFileName=C:\bd\bd_editorial.mdf"

La entrada Data Source especifica el servidor de base de datos que vamos a
utilizar y AttachDBFilename, la localización del fichero de base de datos. Obsérvese que la entrada Initial Catalog está vacía.
Para crear una base de datos utilizando SQL Server Express tiene que hacerlo
desde la línea de órdenes (véase también el capítulo titulado Acceso a una base de
datos). Para iniciar la consola que le permita trabajar contra el motor de base de
datos SQL Server, localice en su instalación el fichero SQLCMD.EXE, cambie a
ese directorio y ejecute la orden:
SQLCMD -S nombre-del-ordenador\SqlExpress

Una vez iniciada la consola, puede escribir órdenes SQL a continuación del
símbolo “>”. Para ejecutar un bloque de sentencias escriba GO. Para salir, escriba
QUIT. Por ejemplo, el guión que muestra la figura siguiente crea la base de datos

APÉNDICE A: ENTORNOS DE DESARROLLO

1053

tfnos con una tabla telefonos, añade tres filas a la tabla y, finalmente, selecciona
todas las filas de la tabla con todas sus columnas:

Para ver la relación de órdenes que puede utilizar a través de la aplicación
SQLCMD ejecute la orden help como se muestra en la figura siguiente. Obsérvese
que cada orden va precedida por dos puntos (:).

1054

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

SQL Server 2012 Express LocalDB
Microsoft SQL Server 2012 Express LocalDB es un modo de ejecución de SQL
Server Express destinado a los desarrolladores de programas con el fin de sustituir
la característica de instancias de usuario de SQL Server Express, que ha quedado
obsoleta. La instalación de LocalDB copia un conjunto de archivos mínimo necesario para iniciar el motor de base de datos de SQL Server. Una instancia de SQL
Server Express LocalDB se puede administrar con la herramienta de línea de órdenes SqlLocalDB.exe.

SQL SERVER MANAGEMENT STUDIO EXPRESS
Si instaló SQL Server, habrá comprobado que no dispone de una herramienta de
administración de bases de datos. Por tal motivo, Microsoft también ha desarrollado una nueva aplicación para gestionar bases de datos que puede obtener de
forma gratuita de Internet en la dirección especificada a continuación:
http://www.microsoft.com/es-es/downloads
Esta aplicación presenta una interfaz gráfica, muy sencilla de utilizar, para
realizar tareas típicas como crear bases de datos, gestionar las tablas de la base,
los procedimientos almacenados, crear usuarios, etc.
Cuando inicie SQL Server Management Studio Express, le serán solicitados el
nombre del servidor de bases de datos, el tipo de autenticación, y el usuario y la
contraseña sólo si eligió autenticación SQL Server:

Una vez realizada la conexión con el gestor de bases de datos, le será mostrada la ventana de la figura siguiente. Seleccione en la lista del panel de la izquierda
la base de datos con la que desea trabajar, haga clic en el botón Nueva consulta de

APÉNDICE A: ENTORNOS DE DESARROLLO

1055

la barra de herramientas y, después, escriba en el mismo las sentencias SQL que
desee ejecutar. Para ejecutar una sentencia SQL haga clic en el botón Ejecutar de
la barra de herramientas.

CREAR UNA BASES DE DATOS
Si no instaló SQL Server 2012 Express puede crear una nueva base de datos local
al proyecto siguiendo los pasos especificados a continuación. Haga clic con el botón secundario del ratón sobre el nombre del proyecto para agregar un nuevo elemento y seleccione Base de datos basada en servicio. A continuación se abrirá el
asistente para la configuración de orígenes de datos y, como no hay ningún objeto
de base de datos disponible porque la base de datos es nueva, haga clic en Cancelar para crear y agregar la base de datos vacía al proyecto. A continuación puede
continuar añadiendo las tablas, los datos de las tablas, las relaciones entre las tablas, etc. Puede ver un ejemplo en el apartado Ejercicios resueltos del capítulo
Acceso a una base de datos.
Si instaló SQL Server 2012 Express (nombre predeterminado del servidor:
sqlexpress), entonces es posible añadir al proyecto elementos nuevos de tipo base

1056

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

de datos utilizando el explorador de bases de datos. Para ello, abra el Explorador
de bases de datos (Ver > Otras ventanas > Explorador de bases de datos). Haga
clic con el botón secundario del ratón sobre el nodo Conexiones de datos y seleccione Agregar conexión. Elija como origen de datos Microsoft SQL Server. Se visualizará la ventana siguiente:

Escriba el nombre de la base de datos y haga clic en Aceptar. Se visualizará el
mensaje La base de datos ‘bd_telefonos’ no existe. ¿Desea intentar crearla?:

Haga clic en Sí. Observará en el explorador de bases de datos que
bd_telefonos ha sido creada.

APÉNDICE A: ENTORNOS DE DESARROLLO

1057

El paso siguiente es añadir las tablas. Despliegue el árbol correspondiente a la
nueva conexión, haga clic con el botón secundario del ratón sobre el nodo Tablas
y agregue una nueva tabla. Después complete el proceso de creación de la misma.

Puede ver un ejemplo de este proceso en el apartado Ejercicios resueltos del
capítulo Acceso a una base de datos.

INSTALACIÓN DE ASP.NET EN WINDOWS
ASP.NET queda instalado automáticamente cuando instaló Visual Studio o, en su
defecto, Visual Studio Express for Web. Ahora bien, para crear y ejecutar aplicaciones para Internet necesitará un servidor de aplicaciones, en el caso de la plataforma Windows éste es IIS (Internet Information Server). La instalación de IIS
debe ser anterior a la de .NET Framework. Si no se hizo así, ASP.NET no estará
habilitado en IIS y no podremos realizar aplicaciones ASP.NET. En este caso, la
solución es registrar manualmente ASP.NET en IIS.

Registro manual de ASP.NET en IIS
Para registrar manualmente ASP.NET en IIS, abra una ventana de consola, sitúese
en la carpeta C:\WINDOWS\Microsoft.NET\Framework\vx.x.xxxxx y ejecute:
aspnet_regiis.exe -i -enable

Esto habilitará IIS para la ejecución de ASP.NET, registrará las extensiones
de ASP.NET (aspx, amsx, asax, etc.) y ya podremos empezar a trabajar con
ASP.NET.
Si echa una ojeada a todas las opciones disponibles (aspnet_regiis.exe -help)
podrá observar algunas muy interesantes, como -c, que instala las secuencias de
órdenes del cliente de esta versión en el subdirectorio aspnet_client de todos los
directorios de sitios IIS.

1058

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

Si la operación anterior no solucionó el problema, pruebe a reparar la instalación actual a partir del material adicional del producto. Si esto tampoco solucionara el problema, sólo queda desinstalar el producto y volverlo a instalar.

DEPURAR CÓDIGO JAVASCRIPT
En una aplicación ASP.NET que incluya código JavaScript (véase el capítulo 20)
es posible utilizar el depurador de Visual Studio o de Visual Web Developer para
depurar ese código.
Para poder depurar código JavaScript, el primer paso es habilitar esta opción
en el navegador. En el caso de Internet Explorer, seleccione Herramientas > Opciones de Internet > Opciones avanzadas y asegúrese de que no esté seleccionada
la opción “Deshabilitar la depuración de scripts”:

Cumplido el requisito anterior, sólo queda poner en el código JavaScript a depurar la sentencia debugger. De esta forma, cuando inicie la depuración de la
aplicación y el flujo de ejecución pase por esta sentencia, la ejecución se detendrá
y podrá continuarla paso a paso.
function CargarTabla(resultado, contexto)
{
debugger;
var elementos =

APÉNDICE A: ENTORNOS DE DESARROLLO

1059

LoadXmlFromString(resultado).getElementsByTagName("string");
TablaResultados = document.getElementById("TablaDeResultados");
if (TablaResultados != null)
{
// ...

DESARROLLO
Para el desarrollo de una aplicación, lo habitual es crear un modelo de clases siguiendo algún patrón, por ejemplo el patrón de arquitectura de software ModelView-ViewModel (MVVM) utilizado por WPF y Silverlight, que es un sucesor del
ampliamente conocido Model-View-Controller (MVC) utilizado por ASP.NET
MVC, nacido del entorno Smalltalk a finales de los años 70.
En MVC la aplicación se compone de tres tipos de objetos que tienen responsabilidades distintas con el objetivo de separar la capa visual de su correspondiente programación y acceso a datos:


El modelo. Es el responsable de los datos y de la lógica de negocio de la aplicación.
La vista. Es el responsable de mostrar los datos al usuario y de permitir su manipulación desde y hacia el modelo.
El controlador. Es el responsable de implementar las respuestas a los eventos
o acciones de los usuarios e invocar peticiones al modelo y probablemente a la
vista.

Con el modelo MVC cada tipo de objeto es responsable de una cosa, lo que
simplifica el desarrollo, comprensión y la realización de pruebas del código fuente. Además, es fácil remplazar las vistas, o tener más de una actuando sobre los
mismos datos.
En el caso de las aplicaciones Silverlight, el .NET Framework dispone de la
capacidad de usar enlaces (bindings) para transferir directamente datos desde el
controlador hacia la vista, por lo que el controlador solo es responsable de imple-

1060

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

mentar el comportamiento de esta. En este caso, el controlador se denomina modelo de vista (view model), dando origen al patrón MVVM donde:

El modelo. Representa los datos o información con la que se trabaja y en la
mayoría de los casos la lógica de negocio asociada. Debe encontrarse completamente aislado de la interfaz de usuario.
La vista. Representa la información en la interfaz de usuario y es capaz de
aceptar la entrada de datos del usuario a través de controles, teclado, ratón u
otros elementos en forma de controles desde la interfaz gráfica.
El modelo-vista. Objeto que separa y aísla completamente a la vista del modelo, se puede pensar en este tipo de objetos como una abstracción de la vista,
que además hace las funciones de intermediario, transformando los datos recibidos del modelo en datos aptos para la vista y viceversa.

Por lo tanto MVVM comparte todos los beneficios de MVC, pero con una
ventaja adicional: la simplificación que resulta de usar enlaces declarativos para
transferir los datos desde y hacia el modelo a la vista.

APÉNDICE B

 F.J.Ceballos/RA-MA

PÁGINAS WEB
¿Quién no ha oído hablar de Internet? La respuesta es evidente, porque donde
quiera que esté oirá hablar de Internet. ¿Por qué? Porque hoy en día forma parte
del mundo de los negocios y del comercio, aunque en sus inicios no fue ésta la intención. Hay muchas empresas que le proporcionan conexión las 24 horas del día
por un precio asequible. Pero, ¿qué es Internet?, ¿qué servicios ofrece?

¿QUÉ ES INTERNET?
Internet, es decir, inter-red, es una red de redes informáticas distribuidas por todo
el mundo que intercambian información entre sí mediante la familia de protocolos
TCP/IP. Puede imaginarse Internet como una gran nube con ordenadores conectados:

Cliente

Servidor
Cliente

Internet surgió de un programa de investigación realizado por la Agencia de
Proyectos de Investigación Avanzados de Defensa (DARPA) de los Estados Unidos sobre la conexión de redes informáticas. El resultado fue ARPANet (1969).
Esta red crece y a principios de los años 80 se conecta con CSNet y MILNet, dos
redes independientes, lo que se considera como el nacimiento de Internet (Inter-

1062

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

national Network of computers). También forman parte de esta red NSI (NASA
Science Internet) y NSFNet (National Science Foundation Net).
Durante muchos años Internet ha servido para que muchos departamentos de
investigación de distintas universidades distribuidas por todo el mundo pudieran
colaborar e intercambiar información. Sólo recientemente ha comenzado a formar
parte de los negocios y de nuestra vida cotidiana.
Internet ha hecho que el mundo empresarial se haya replanteado sus sistemas
de comunicación internos y externos y en la mayoría de los casos los haya encauzado vía Internet. Esto ha dado lugar a dos subpoblaciones dentro de Internet: intranets y extranets.

Intranet
Una intranet no es más que una red local que utiliza los mismos protocolos que
Internet, independientemente de que esté o no conectada a Internet. ¿Qué ventajas
tiene una intranet? Fundamentalmente dos: independencia de los proveedores habituales de soluciones y una única forma de trabajar que evita tener que aprender
sistemas nuevos, lo que redunda en un ahorro de formación. Por otra parte, una
intranet suele estar dotada de una velocidad bastante mayor que la habitual en Internet, lo que posibilita una comunicación muy fluida, incluso, cuando se trata de
flujos de información multimedia.

Terminología Internet
Desde el punto de vista físico, Internet no es una simple red, sino miles de redes
informáticas que trabajan conjuntamente bajo los protocolos TCP/IP (Transmision
Control Protocol/Internet Protocol - Protocolo de Control de Transmisiones/Protocolo Internet), entendiendo por protocolo un conjunto de normas que regulan la
comunicación entre los distintos dispositivos de una red. Desde el punto de vista
del usuario, Internet es una red pública que interconecta universidades, centros de
investigación, servicios gubernamentales y empresas.
El conjunto de protocolos de Internet está compuesto por muchos protocolos
relacionados con la asociación formada por TCP e IP y relacionados con las diferentes capas de servicios de la red; esto es, las funciones de una red se pueden
agrupar en capas de servicios de la red. Imagínese las capas como distintas estaciones por las que debe pasar un paquete de información cuando realiza la ruta de
un ordenador a otro conectados a diferentes puntos dentro de Internet. Por ejemplo, el protocolo TCP/IP visto desde este punto de vista puede imaginárselo de
forma resumida así:

APÉNDICE B: PÁGINAS WEB

1063

Aplicación
(FTP, Telnet, Gopher, Word Wide Web)
API de Windows Sockets
Transporte
(TCP y UDP)
Red
(IP)
Enlace
(controlador de dispositivo, tarjeta de red, protocolos de control de la línea)

Entre dos capas puede haber una interfaz de programación (API) para interpretar los mensajes o paquetes a medida que van pasando.
Utilizar una interfaz de programación, como la API de Windows Sockets, libera al programador de tratar con detalles de cómo se pasan los paquetes de información entre las capas inferiores.
Las capas de enlace y de red se encargan de empaquetar la información y de
llevar los paquetes de un lugar a otro de la red. ¿Cómo se identifican estos lugares? La respuesta es con direcciones de Internet que permitan identificar tanto el
ordenador como el usuario, ya que un mismo ordenador puede tener dados de alta
diferentes usuarios. Estas direcciones son especificadas según un convenio de sistema de nombres de dominio (DNS).
Un DNS tiene el formato siguiente:
[subdominio].[subdominio].[...].dominio

Por ejemplo:
uni.alcala.es

En este ejemplo, es es el dominio, alcala es un subdominio de es, y uni un
subdominio de alcala. Algunos dominios de nivel superior son:
Dominio
com
edu
net
us
de
es

Cobertura
organizaciones comerciales
instituciones educativas
suministradores de servicios de red
Estados Unidos
Alemania
España

1064

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

Cada nombre de dominio se corresponde con una única dirección de Internet
o dirección IP. Una dirección IP es un valor de 32 bits dividida en cuatro campos
de 8 bits. Por ejemplo:
130.206.82.7

Para referirse a un usuario perteneciente a un determinado dominio, la sintaxis
empleada es:
usuario@[subdominio].[subdominio].[...].dominio

Los programas que gestionan los nombres de dominio se denominan servidores de nombres. Cada servidor de nombres posee información completa de una
determinada zona (subconjunto de un dominio) y de otros servidores de nombres
responsables de otras zonas. De esta forma, cuando llega una solicitud de información sobre la zona de la que es responsable un determinado servidor, éste sencillamente proporciona la información. Sin embargo, cuando llega una solicitud
de información para una zona diferente, el servidor de nombres se pone en contacto con el servidor de esa zona. Los servidores DNS constituyen la base de datos
distribuida de nombres de Internet.
La capa de transporte es responsable de la entrega fiable de los datos. En esta
capa se emplean dos protocolos diferentes: TCP y UDP. TCP toma mensajes de
usuario de longitud variable y los pasa al nivel de red, solicitando acuse de recibo;
y UDP es similar, salvo en que no solicita acuse de recibo de los datos.
La capa de aplicación proporciona una interfaz a la aplicación que ejecuta un
usuario. Dicho de otra forma, proporciona el conjunto de órdenes que el usuario
utiliza para comunicarse con otros ordenadores de la red.
Existen muchos protocolos en TCP/IP. A continuación, se indican algunos
bastante conocidos:

FTP (File Transfer Protocol - Protocolo de transferencia de ficheros). Copia
ficheros de una máquina a otra.

Gopher. Protocolo que permite buscar y recuperar documentos mediante un
sistema de menús.

POP 3 (Post Office Protocol - Protocolo de oficina de correos). Protocolo para gestionar el correo electrónico, en base a su recepción y envío posterior,
entre el usuario y su servidor de correo. Con este fin son empleados también
los protocolos IMAP (Internet Message Access Protocol) y HTTP (correo
web).

APÉNDICE B: PÁGINAS WEB

1065

SMTP (Simple Mail Transfer Protocol - Protocolo de transferencia de correo).
Protocolo para controlar el intercambio de correo electrónico entre dos servidores de correo en Internet.

Telnet (Telecomunications NetWork Protocol - Protocolo de telecomunicaciones de red). Protocolo utilizado para establecer conexiones entre terminales
remotos. Permite establecer conexiones entre máquinas con diferentes sistemas operativos.

USENet. Nombre con el que se denomina al conjunto de los grupos de discusión y noticias, establecidos en Internet. La idea de USENet es servir como
tablón electrónico de anuncios.

HTTP (HyperText Transfer Protocol). Protocolo de transferencia de hipertexto utilizado por WWW (World Wide Web - La telaraña mundial). Se trata de
un sistema avanzado para la búsqueda de información en Internet basado en
hipertexto y multimedia. El software utilizado consiste en exploradores
(browsers), también llamados navegadores, con una interfaz gráfica.

SERVICIOS EN INTERNET
Los servicios más comunes son el correo electrónico, la conexión remota, transferencia de ficheros, grupos de noticias y la WWW. Programas que facilitan estos
servicios hay muchos, y su manejo, además de sencillo, es similar. Por eso, independientemente de los que se utilicen en los ejemplos, usted puede emplear los
suyos de forma análoga.
En cualquier caso, tenga presente que sólo podrá acceder a Internet si además
de un ordenador y un módem (un módem es un dispositivo que conecta un ordenador a una línea telefónica), ha contratado dicho servicio con un proveedor de
Internet, o bien si su ordenador forma parte de una red que le ofrece acceso a Internet.
El correo electrónico (correo-e o e-mail) es uno de los servicios más utilizados en todo el mundo. Como su nombre indica, tiene como finalidad permitir enviar y recibir mensajes. Un ejemplo de aplicación que proporciona este servicio es
Microsoft Outlook Express.
La orden telnet (de Windows, Unix, etc.) proporciona la capacidad de mantener sesiones como un terminal del ordenador remoto, lo que le permite ejecutar
órdenes como si estuviera conectado localmente.

1066

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

El protocolo de transferencia de ficheros (ftp) es un método sencillo y efectivo de transferir ficheros ASCII y binarios entre ordenadores conectados a una red
TCP/IP. Las órdenes ftp utilizadas con mayor frecuencia son las siguientes:
Orden ftp

Significado

ascii
binary
bye
cd
close
ftp
get
help

Establece el modo ASCII para la transferencia de ficheros.
Establece el modo binario para la transferencia de ficheros.
Finaliza la sesión ftp y sale.
Cambia de directorio de trabajo en el ordenador remoto.
Finaliza la sesión ftp.
Inicia una sesión ftp.
Obtiene un fichero del ordenador remoto.
Proporciona las órdenes ftp disponibles o información relativa a la
orden especificada.
Cambia al directorio local de trabajo. Suele utilizarse para seleccionar los directorios a los que irán a parar los ficheros transferidos.
Lista el contenido de un directorio remoto.
Obtiene un grupo de ficheros que pueden haberse especificado utilizando algún comodín.
Envía un grupo de ficheros que pueden haberse especificado utilizando algún comodín.
Inicia una conexión ftp con el ordenador remoto especificado.
Envía un fichero al ordenador remoto.

lcd
ls
mget
mput
open
put

Una interfaz de línea de órdenes proporciona un acceso pleno a las facilidades
de ftp, pero el riesgo de cometer errores es alto, ya que es fácil equivocarse al escribir la orden. Afortunadamente existen varias interfaces gráficas de usuario que
eliminan la posibilidad de error a la que hacíamos mención anteriormente.
Los grupos de noticias, noticias USENET, netnews o simplemente news, son
foros de discusión en línea. Los artículos de noticias de USENET se clasifican en
grupos de noticias por temas (ordenadores, aplicaciones, alpinismo, etc.).
La World Wide Web, también conocida por WWW o simplemente Web, es uno
de los logros más interesantes en Internet. La Web es un sistema hipermedia interactivo que permite conectarse a grandes cantidades de información en Internet. Un
sistema hipermedia está compuesto por páginas que contienen texto cuidadosamente formateado, imágenes llenas de color, sonido, vídeo y enlaces a otras páginas distribuidas por todo el mundo. Puede acceder a esas otras páginas

APÉNDICE B: PÁGINAS WEB

1067

simplemente seleccionando uno de los enlaces. La información se recupera automáticamente sin necesidad de saber dónde está.
El proyecto Web, que fue iniciado en el Centro Europeo de Investigación Nuclear (European Center for Nuclear Research), ha crecido a una velocidad impresionante. Esto se debe fundamentalmente a que soporta información de todo tipo:
texto, sonido y gráficos.
La forma de establecer una conexión es muy sencilla. Suponiendo que físicamente está conectado a Internet, inicie uno de los programas de los muchos que
hay para navegar por este sistema de información, y automáticamente le mostrará
una pantalla de información que le conducirá a muchas otras. Por ejemplo, si inicia la aplicación Microsoft Internet Explorer, se visualizará una ventana similar a
la siguiente:

La ventana del explorador (también llamado navegador) tiene una barra de
menús donde están todas las órdenes que puede utilizar y una barra de herramientas correspondientes a las órdenes más utilizadas para navegar por la Web.
Los botones Atrás y Adelante le permiten moverse a través de las páginas que
usted ya ha visitado.
El botón Detener detiene una página que se está cargando actualmente, quizás
porque usted ha cambiado de opinión una vez que ha visto parte de la página.

1068

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

El botón Actualizar vuelve a cargar la página que se esté visualizando en ese
momento. A veces, esto es necesario debido a fallos en la red.
El botón Inicio le permite volver a la página de inicio. Para cambiar su página
de inicio, vaya a la página que desea que aparezca cuando arranque por primera
vez el explorador, ejecute la orden Opciones de Internet del menú Herramientas,
haga clic en la pestaña General y después en Usar actual.
Cuando hace clic en el botón Búsqueda de la barra de herramientas, aparece el
panel de búsqueda del navegador a la izquierda de la ventana. Este panel le proporciona acceso a diversos servicios de búsqueda que ofrecen diferentes clases de
capacidades de búsqueda. Pruebe los distintos servicios de búsqueda para ver las
clases de información que proporcionan.
Si desea buscar información adicional rápidamente, puede escribir go, find o
? seguido de una palabra o una frase, en la barra de direcciones (espacio en el que
puede escribir y mostrar la dirección de una página web). Internet Explorer iniciará inmediatamente una búsqueda mediante el servicio de búsqueda predeterminado. También puede utilizar buscadores como Google, por ejemplo.
Una vez que esté en una página web, puede buscar un texto específico en dicha página. Para iniciar la búsqueda, haga clic en Buscar en esta página del menú
Edición.

PÁGINAS WEB
Anteriormente ha aprendido cómo acceder a la Web; si ya lo ha hecho, habrá visto
muchas páginas con magníficos gráficos, listas, formularios y otros elementos
muy atractivos. Pero, ¿cómo se puede crear una página web de estas características a la que otros usuarios puedan acceder? Hay muchas herramientas que le permitirán realizarlo. Para ello, antes debe conocer básicamente lo que es HTML
(HyperText Markup Language - Lenguaje para hipertexto), el lenguaje utilizado
para construir páginas web.

Qué es HTML
HTML es un lenguaje utilizado para desarrollar páginas y documentos web. A diferencia de los lenguajes convencionales, HTML utiliza una serie de etiquetas especiales intercaladas en un documento de texto sin formato. Dichas etiquetas
serán posteriormente interpretadas por los exploradores encargados de visualizar
la página o el documento web con el fin de establecer el formato.

APÉNDICE B: PÁGINAS WEB

1069

Para editar una página HTML y posteriormente visualizarla, todo lo que necesita es un editor de texto sin formato y un explorador web. Para ver una página
HTML no necesita una conexión a la red; cualquier explorador web debe permitirle hacerlo trabajando en local. No obstante, existen otras herramientas como
FrontPage que facilitan la generación de páginas HTML.
Posteriormente, las páginas deben ser colocadas en un servidor web para que
otros usuarios puedan acceder a ellas.

Etiquetas básicas HTML
Las etiquetas indican a los exploradores web cómo tienen que mostrar el texto y
los gráficos. Normalmente se escriben entre los símbolos < y >, y suele haber una
etiqueta de comienzo (<texto etiqueta>) y otra de fin (</texto etiqueta>) para enmarcar el texto que va a ser formateado por ellas. Muchas etiquetas incluyen distintos atributos que detallan la forma de mostrar el texto que aparece entre ellas.
HTML no es sensible a las minúsculas y mayúsculas. Por ejemplo, la siguiente línea de código muestra cómo utilizar atributos y valores con la etiqueta font. La
etiqueta de apertura incluye el atributo size (tamaño) al que se asigna el valor 10;
después aparece el texto que se desea mostrar con el tamaño especificado, y a
continuación la etiqueta de cierre.
<font size="10">Usuario:</font>

Todas las etiquetas de una página web se colocan dentro de la etiqueta html,
la cual define dos secciones: head (cabecera) y body (cuerpo). La etiqueta head
contiene etiquetas que afectan a la página web completa, por ejemplo title (título),
y la etiqueta body contiene el resto de las etiquetas que definen el contenido de la
página web. Según lo expuesto, el esqueleto de una página web puede ser el siguiente:
<html>
<head>
<title>Título del documento</title>
</head>
<body>
Cuerpo del documento: texto, imágenes, sonido y órdenes HTML
</body>
</html>

Guarde ahora estas líneas en un fichero de texto ASCII con el nombre esqueleto.html. A continuación, diríjase a la carpeta donde lo ha guardado y haga doble
clic sobre el nombre del fichero. El resultado será el siguiente:

1070

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

Etiquetas de formato de texto
Igual que en un documento Word, las páginas HTML pueden tener cabeceras. Las
cabeceras son insertadas con la etiqueta hn; donde n es un valor de 1 a 6. El tamaño del texto es mayor cuanto mayor es el nivel (el nivel más alto es el 1). Los
niveles no tienen por qué emplearse consecutivamente.
Si desea insertar algún tipo de separador, por ejemplo, una raya horizontal,
puede hacerlo con la etiqueta hr (horizontal rule - raya horizontal).
Para introducir un párrafo, utilice la etiqueta p o nada. Un párrafo va precedido automáticamente por una línea en blanco. Los retornos de carro en el texto son
ignorados; por lo tanto, cuando quiera introducir uno utilice la etiqueta br.
El siguiente ejemplo clarifica lo expuesto hasta ahora (está localizado en el fichero Cap15\HTML\texto.html):
<html>
<head>
<title>Título del documento</title>
</head>
<body>
<h1>Ejemplo de un documento HTML</h1>
<hr>
<h3>El cuerpo del documento puede contener:</h3>
<h4>Texto, imágenes, sonido y órdenes HTML</h4>
<p>
HTML es un lenguaje utilizado para desarrollar páginas y
documentos web.
<p>
A diferencia de los lenguajes convencionales, HTML utiliza
una serie de etiquetas especiales intercaladas en un
documento de texto sin formato.

APÉNDICE B: PÁGINAS WEB

1071

<br>
Dichas etiquetas serán
posteriormente interpretadas por los exploradores
encargados de visualizar la página o el documento web, con
el fin de establecer el formato.
</p><hr>
</body>
</html>

Observe la colocación de las etiquetas. A HTML no le importa que las etiquetas estén al final de la línea o en cualquier otra parte. También hay etiquetas que
no requieren poner la etiqueta final; por ejemplo hr, p o br.
Los exploradores web ignoran dónde terminan las líneas de texto. El texto se
ajustará en todo momento al tamaño de la ventana.
El resultado del código HTML anterior es el siguiente:

HTML también proporciona un número de etiquetas para dar formato a las
palabras y a los caracteres. Por ejemplo, la etiqueta b indica negrita y la i itálica.
La etiqueta code visualiza un texto monoespaciado. La etiqueta font permite especificar el nombre, el tamaño y el color del tipo de letra a utilizar. Por ejemplo:
<font size=2 face="Arial">
Tipo de fuente Arial, tamaño 2; <b>negrita</b> y <i>cursiva</i>
</font>

1072

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

La información también se puede organizar en listas empleando la etiqueta li.
Por ejemplo, si en la página anterior introduce la siguiente modificación, obtendrá
esta información en forma de lista en lugar de en línea.
<li>Texto <li>Imágenes <li>Sonido <li>Órdenes HTML

La lista puede numerarse utilizando la etiqueta ol. Por ejemplo, con la siguiente línea, la lista anterior se presentaría numerada.
<ol><li>Texto <li>Imágenes <li>Sonido <li>Órdenes HTML</ol>

El resultado será (ejemplo localizado en el fichero Cap15\HTML\listas.html):

URL
A los recursos de la Web se accede por medio de una dirección descriptiva conocida como URL (Uniform Resource Locator - Localizador uniforme de recursos).
Todo aquello a lo que se puede acceder en la Web tiene un URL.
Los URL son básicamente una extensión de la ruta que define a un fichero
(path). Un URL añade, además, un prefijo que identifica el método de recuperación de la información que ha de emplearse (http, ftp, gopher, telnet, news, etc.),
así como un nombre de dominio o dirección IP que indica el servidor que almacena la información. Finalmente aparece la ruta de acceso al fichero. Por ejemplo:
http://msdn.microsoft.com/library/spa/default.asp

APÉNDICE B: PÁGINAS WEB

1073

Enlaces entre páginas
Hemos dicho que la World Wide Web es un servicio de información basado en hipertexto. Se denomina hipertexto a la capacidad de asociar a una palabra o imagen
de un documento un código oculto, de forma que cuando un usuario haga clic en
esa palabra o imagen, el sistema lo transporta desde el lugar actual a otro lugar del
mismo o de otro documento. Estos códigos especiales se denominan enlaces, focos, saltos o accesos directos.
Para definir un enlace, se utiliza la etiqueta a (anchor o ancla). Esta etiqueta
delimita el texto que se quiere utilizar para enlazar con otra página. Este texto
aparecerá subrayado para el usuario.
Para indicar al explorador la página que tiene que recuperar cuando el usuario
haga clic en un enlace, incluya en la etiqueta de apertura a el atributo href y escriba a continuación el URL de la página que se quiere recuperar.
También, en documentos largos, se puede utilizar el atributo name para asignar un nombre a un enlace y después utilizar href en otro lugar dentro de la misma página para saltar a ese enlace. Por ejemplo, el siguiente código implementa
estas dos facilidades (ejemplo localizado en Cap15/HTML/enlaces.html):
<html>
<head>
<title>
Título del documento
</title>
</head>
<body>
<h1>Ejemplo de un documento HTML</h1>
<hr>
<h3>El cuerpo del documento puede contener:</h3>
<h4>
<ol><li>Texto <li>Imágenes <li>Sonido <li>Órdenes HTML</ol>
</h4>
<p>
<a name="Definición">HTML</a> es un lenguaje utilizado para
desarrollar páginas y documentos web.
<p>
A diferencia de los lenguajes convencionales, HTML utiliza
una serie de etiquetas ASCII especiales intercaladas en un
documento escrito en ASCII.
<br>
Dichas etiquetas serán posteriormente interpretadas por los
exploradores encargados de visualizar la página o el
documento web, con el fin de establecer el formato.
<p>

1074

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

Para editar una página <a href="#Definición">HTML</a> y
posteriormente visualizarla, todo lo que necesita es un
editor de texto ASCII y un explorador web.
<hr>
Haga clic <a href="http://www.sitio_web/ini/inicio.html">
aquí</a> para ir a la página de inicio
</body>
</html>

El resultado puede verlo en la figura siguiente:

Gráficos
Una forma de insertar imágenes en un documento HTML es utilizando la etiqueta
img y sus atributos src, que permite especificar el nombre del fichero que contiene la imagen (habitualmente .gif o .jpeg), y align, que permite indicar cómo el explorador debe alinear la imagen con cualquier texto que esté cerca de ella (top,
middle o bottom).
Cuando diseñe una página web, piense que puede haber exploradores que no
soportan gráficos. Para contemplar esta posibilidad, utilizaremos el atributo alt
que permite especificar un texto en el lugar de la imagen cuando el explorador no
pueda mostrarla. Por ejemplo:
<html>
...
<hr>
<center>
El profesor Ceballos resolviendo dudas a sus alumnos.
<img src="ceballos.jpeg" align=bottom
alt=" [Foto del profesor Ceballos]">
</center>
<hr>
Haga clic <a href="http://www.sitio_web/ini/inicio.html">

APÉNDICE B: PÁGINAS WEB

1075

aquí</a> para ir a la página de inicio
</body>
</html>

La etiqueta center centra la imagen y el título de la imagen.
También desde un documento puede saltar a otro. Por ejemplo:
Haga clic <a href="ceballos.html">
aquí</a> para ir a la biografía de Ceballos.

El ejemplo anterior indica que cuando el usuario haga clic en la palabra
“aquí”, se cargará un nuevo documento HTML guardado como ceballos.html.
Igual que utilizamos una palabra para enlazar con otro lugar, podemos utilizar
una imagen; esto es, un clic sobre una imagen gráfica le puede conducir a otro lugar. Por ejemplo:
<center>
<a href="enlaces.html">
<img src="ceballos.jpg" align=bottom
alt="Foto del profesor Ceballos">
</a>
</center>

El código anterior realizará un salto a la página enlaces.html cuando el usuario haga clic sobre la imagen ceballos.jpg. Cuando ejecute este código, observe
que al pasar el ratón por encima de la imagen, el cursor se transforma en una
mano y aparece una etiqueta que visualiza “Foto del profesor Ceballos”.

Marcos
Las páginas HTML que hemos escrito en los apartados anteriores ocupan toda la
ventana del explorador. Sin embargo, utilizando marcos es posible visualizar múltiples documentos en una misma página.
Una forma de insertar un marco flotante en una página es utilizando la etiqueta iframe con los atributos src, width y height. El atributo src especifica el URL
del documento que se quiere visualizar, y width y height indican la anchura y la
altura del marco. Por ejemplo:
<center>
El autor:<br>
<iframe src="ceballos.html" width=650 height=300></iframe>
</center>

1076

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

El código anterior crea un marco para visualizar el documento ceballos.html.
Al atributo src se le puede asignar también una dirección URL de cualquier
página de cualquier servidor. Esto es,
<iframe src="http://www.microsoft.com" width=650 height=300></iframe>

La figura siguiente muestra un marco dentro de una página. El código puede
verlo en el fichero marco.html de la carpeta Cap15\HTML del material adicional.

Formularios
Los formularios permiten crear interfaces gráficas de usuario en el seno de una
página web. Los componentes de estas interfaces, denominados también controles, serán cajas de texto, cajas para clave de acceso, botones de pulsación, botones
de opción, casillas de verificación, menús, tablas, listas desplegables, etc.
Para crear un formulario, se utiliza la etiqueta form. Por ejemplo, el segmento
de código siguiente muestra cómo es el esqueleto de un formulario HTML:
<form method={get|post} action="fichero para procesar los datos">
Controles que forman el formulario
</form>

APÉNDICE B: PÁGINAS WEB

1077

El atributo method es opcional y su valor por omisión es get indicando así al
navegador que debe agregar los nombres de los campos del formulario y sus datos
al URL especificado por action (acción a tomar cuando se pulse el botón enviar).
La cantidad de datos que se puede concatenar al URL está limitada, truncándose
la información en exceso. Esto no ocurre si el valor para este atributo es post; en
este caso, se transmite un fichero con los datos del formulario que será recibido en
el servidor en la entrada estándar del componente de procesamiento.
Los controles que forman parte del formulario se definen dentro de la etiqueta
form. En los siguientes apartados se indica cómo crear cada uno de estos controles. En general, por cada control se envía al servidor su nombre y su contenido o
valor especificado (si no se especifica un valor, se envía uno por omisión).

Entrada básica de datos
Existe una amplia variedad de controles de entrada de datos. Para crearlos, se utiliza la etiqueta input y los atributos type y name:
<input
type = {text|password|checkbox|radio|hidden|image|submit|reset}
name = "Variable que toma el valor"
>

El valor del atributo type especifica el tipo de control que se creará, y el del
atributo name el nombre de la variable que almacenará el dato.
Caja de texto
Una caja de texto es un control de entrada de tipo text. Se utiliza para solicitar
a un usuario que introduzca un dato. Por ejemplo, la siguiente línea de código
muestra una caja de texto para solicitar un nombre. El tamaño de la caja es 35 y el
valor será almacenado en la variable nombre:
Nombre: <input type="text" name="nombre" size="35">

El valor del atributo size especifica el tamaño de la caja. Otros atributos que
se pueden utilizar son value para especificar un valor inicial, readonly (que no
lleva asociado ningún valor) para indicar que la caja es de sólo lectura y maxlength para especificar el número máximo de caracteres que un usuario puede escribir.

1078

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

Caja de clave de acceso
Una caja de clave de acceso es un control de entrada de tipo password. Se trata
de una caja de texto en la que los caracteres escritos son reemplazados por asteriscos. Por ejemplo, la siguiente línea de código muestra una caja de texto para solicitar una clave de acceso. El tamaño de caja es 25, el valor será almacenado en la
variable clave y el número máximo de caracteres que admite es 20:
Clave de acceso: <input type="password" name="clave"
size="25" maxlength="20">

Casilla de verificación
Una casilla de verificación es un control de entrada de tipo checkbox. Se trata
de un botón que puede presentar dos estados: seleccionado y no seleccionado. Se
utilizan para mostrar y registrar opciones que un usuario puede elegir; puede seleccionar varias de un grupo de ellas. Por ejemplo, las siguientes líneas de código
muestran tres casillas de verificación. La primera se mostrará seleccionada:
<input type="checkbox" name="cv1" value="1" checked> Opción 1 <br>
<input type="checkbox" name="cv2" value="2"> Opción 2 <br>
<input type="checkbox" name="cv3" value="3"> Opción 3 <br>

Se debe especificar el atributo name (como caso especial, se puede especificar
el mismo nombre para todas). El atributo checked permite iniciar el estado de una
casilla a seleccionado. Dicho estado, on u off, es almacenado por el atributo
name. Cuando se envíen los datos del formulario, se enviarán el nombre de la variable y el valor que indique su estado. También será enviado el valor indicado
por value o nulo si no se especificó.
Botón de opción
Un botón de opción es un control de entrada de tipo radio. Igual que ocurre
con la casilla de verificación, puede presentar dos estados: seleccionado y no seleccionado. Se utilizan para mostrar y registrar una opción que un usuario puede
elegir entre varias; cuando selecciona una, la que estaba seleccionada dejará de estarlo. Por ejemplo, las siguientes líneas de código muestran tres botones de opción. El segundo se mostrará seleccionado:
<input type="radio" name="opcion" value="1"> Opción 1 <br>
<input type="radio" name="opcion" value="2" checked> Opción 2 <br>
<input type="radio" name="opcion" value="3"> Opción 3 <br>

Para el comportamiento descrito, todos los botones de opción tendrán el mismo atributo name y con un valor distinto del atributo value. El valor enviado será

APÉNDICE B: PÁGINAS WEB

1079

el correspondiente al botón seleccionado. El atributo checked permitirá seleccionar por omisión uno de los botones de un grupo.
Parámetros ocultos
Un parámetro oculto es un control de entrada de tipo hidden. En este caso no
se muestra ningún campo de entrada de datos al usuario, pero el par variable valor
especificado es enviado junto con el formulario.
<input type="hidden" name="variable" value="valor">

Se suelen utilizar para mantener datos durante una sesión.
Enviar datos
Un botón enviar es un control de entrada de tipo submit. Se utiliza para enviar
los datos del formulario, pasando el control al programa indicado por el atributo
action del formulario. Todo formulario debe tener un botón submit, a menos que
incluya una caja de texto.
<input type="submit" value="Enviar datos">

El atributo value especifica una etiqueta no editable que se mostrará como título del botón. Lo normal es que este control no envíe datos, pero si se incluye el
atributo name con un nombre de variable, será enviada la variable con el valor de
value. Esto puede ser útil para distinguir cuál fue el botón pulsado cuando se incluyan varios.
<input type="submit" name="enviar" value="Enviar">
<input type="submit" name="buscar" value="Buscar">

Borrar los datos de un formulario
Un botón borrar es un control de entrada de tipo reset. Se utiliza para restablecer los valores iniciales de los controles del formulario.
<input type="reset" value="Borrar datos">

Imágenes
Una imagen es un control de entrada de tipo image. Su finalidad es análoga al
botón submit, pero en este caso se presenta una imagen en lugar de un botón. Los
datos del formulario se enviarán al hacer clic sobre la imagen .jpg o .gif.
<input type="image" src="fichero.jpg">

1080

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

Orden de tabulación
Para trasladarse de un control a otro del formulario, el usuario puede utilizar la tecla tab. En este caso, el orden en el que los controles serán recorridos queda determinado por su orden de aparición en el formulario, o bien por el atributo
tabindex. Por ejemplo:
<input type="text" name="nombre" size="30" tabindex="1">

El valor de tabindex es un número (1, 2, 3...) que corresponde al orden en el
que se seleccionará un control cuando el usuario pulse la tecla tab. El control que
se seleccionará en primer lugar es el 1.

Caja de texto multilínea
En ocasiones es necesario permitir al usuario escribir varias líneas de texto libre;
por ejemplo, un mensaje. Para esto se utiliza un control denominado área de texto
(textarea) que incluye una barra de desplazamiento vertical:
Mensaje: <br><textarea name="mensaje"
rows="5" cols="20" wrap>
</textarea>

El valor del atributo rows especifica el número de filas que visualizará el área
de texto a la vez y cols el número de caracteres por fila. El atributo wrap, que no
lleva asociado ningún valor, indica que se saltará automáticamente a la línea siguiente cuando se complete la línea en la que se escribe.

Listas desplegables
Una lista desplegable permite seleccionar una opción entre varias. Es la mejor alternativa para añadir menús a una interfaz gráfica. La etiqueta que permite crear
un control de este tipo es select. Las opciones de la lista se especifican utilizando
la etiqueta option. Por ejemplo, el siguiente código mostrará una lista desplegable
con tres opciones, de las cuales aparecerá seleccionada inicialmente la segunda:
<select name="opcion">
<option value="1"> Opción 1
<option selected value="2"> Opción 2
<option value="3"> Opción 3
</select>

APÉNDICE B: PÁGINAS WEB

1081

El atributo value de option indica el valor asociado con la opción especificada; si se omite este atributo, el valor que se toma es el texto especificado para la
opción. La etiqueta option que contenga el atributo selected será considerada la
opción por omisión; en caso de que no se especifique ninguna se considerará la
primera de las opciones. Se puede también especificar el atributo size para indicar
el número de opciones que la lista visualizará a la vez.
Para permitir realizar selecciones múltiples utilizando las teclas Ctrl o Alt, hay
que añadir el atributo multiple; en este caso se mostrará una lista desplegada. Por
ejemplo:
<select name="opcion" multiple>
<option value="1"> Opción 1
<option selected value="2"> Opción 2
<option value="3"> Opción 3
</select>

Utilizando la etiqueta optgroup, se pueden agrupar las opciones (como si de
un submenú se tratara); cada grupo será identificado con una etiqueta especificada
por el atributo label. Por ejemplo:
<select name="opcion">
<optgroup label="grupo 1">
<option value="1"> Opción
<option value="2"> Opción
<option value="3"> Opción
</optgroup>
<optgroup label="grupo 2">
<option value="4"> Opción
<option value="5"> Opción
</optgroup>
</select>

1
2
3

4
5

Aplicando la teoría expuesta hasta ahora, vamos a diseñar un formulario, como el que muestra la figura siguiente, que permita a un alumno concertar una tutoría con su profesor.

1082

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

El código HTML que da lugar a este formulario puede ser el siguiente (la expresión &nbsp indica un espacio en blanco). El código puede obtenerlo del fichero Cap15\HTML\tutorias.html del material adicional.
<html>
<head>
<title>Concertar una tutoría</title>
</head>
<body>
<h1 align="center">CONCERTAR UNA TUTORÍA</h1>
<form action="http:\\localhost:8080/miap/tutorias"
method=post>
Alumno:<br><input type="text" name="alumno" size="60">
<br><br>Con el profesor:
<br><input type="text" name="profesor" size="60">
<br><br>Día:<br>
<select name="día">
<option>lunes <option>miércoles <option>jueves
</select>
<br><br>Hora:
&nbsp;&nbsp;&nbsp;10<input type="radio" name="hora" value="10"
checked>
&nbsp;&nbsp;&nbsp;12<input type="radio" name="hora" value="12">
&nbsp;&nbsp;&nbsp;16<input type="radio" name="hora" value="16">
&nbsp;&nbsp;&nbsp;18<input type="radio" name="hora" value="18">

APÉNDICE B: PÁGINAS WEB

1083

<br><br>Asunto:<br><textarea name="asunto"
rows="5" cols="40" wrap></textarea>
<br><br><input type="submit" value="Enviar datos">
&nbsp;&nbsp;<input type="reset">
</form>
</body>
</html>

Tablas
Para crear una tabla, se utilizan las etiquetas table, tr, th y td. La etiqueta table
define el cuerpo de la tabla; tr define una fila de la tabla; th define una celda de
cabecera y td define una celda de datos. Por ejemplo:
<table border="1">
<tr>
<th>Nombre</th>
<th>Nota</th>
</tr>
<tr>
<td width=200>Javier Ceballos Fernández</td>
<td width=30 align=right>10.00</td>
</tr>
<tr>
<td width=200>Elena Ortiz Fuentes</td>
<td width=30 align=right>7.50</td>
</tr>
</table>

El atributo border de table permite añadir un borde a la tabla de ancho igual
al valor especificado en píxeles. Los atributos width y align de td (o de th) permiten definir, respectivamente, el ancho de la celda y el tipo de ajuste del dato en
la celda.
Otras operaciones que se pueden hacer a la hora de diseñar una tabla son:

Extender una celda en múltiples columnas:
<th colspan=2> cabecera 1</th>

Extender una celda en múltiples filas:
<th rowspan=2> cabecera 1</th>

Modificar el ancho y el alto de la tabla en valor absoluto o respecto al tamaño
de la ventana del navegador:
<table width=60% height=80%>

1084

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

Modificar el tamaño de una celda:
<td width=200 height=50>

Alinear el contenido de una celda:
<td valign=top align=left>

Modificar el color de fondo de una celda:
<td bgcolor="green">

Modificar el espacio y el margen de las celdas:
<table border cellspacing="8" cellpadding="8">

Controlar los saltos de línea en una celda:
<td nowrap>

HOJAS DE ESTILO
Es evidente que el lenguaje HTML está limitado a la hora de organizar la presentación de los elementos de una página web. Pues bien, para cubrir esta deficiencia
surgen las hojas de estilo (Cascade Style Sheets - CSS). Éstas no sólo permiten
organizar la presentación de una página, sino que además, intentan separar el contenido de la forma de presentarlo.
Por ejemplo, para introducir un nuevo párrafo en una página web, utilizamos la
etiqueta <p>. Pues bien, con las hojas de estilo también podremos indicar que su
texto sea azul, que tenga un margen izquierdo de 20 píxeles y que tenga un borde
de ancho 2. Esto se codificaría de la forma siguiente:
<style type="text/css">
p {color: blue; margin-left: 20; border: solid; border-width: 2}
</style>

En este ejemplo se puede observar que la declaración de los atributos que definen un determinado elemento de la página queda limitada por la etiqueta style.
Esta etiqueta sólo puede utilizarse en la cabecera de la página, o bien dentro de la
etiqueta de cabecera del elemento, y su parámetro type indica la sintaxis utilizada
para definir esos atributos. En el caso de las hojas de estilo en cascada, el tipo deberá ser “text/css”. También observamos que los atributos se especifican a continuación del elemento HTML que se quiere personalizar, encerrados entre llaves.
En el ejemplo, son cuatro: el color (en el formato habitual), el margen izquierdo
en píxeles y el tipo y el ancho del borde. Tenga presente que CSS es sensible a las
mayúsculas y minúsculas. Puede ver un resumen de los atributos CSS en la carpeta docs del material adicional que acompaña al libro.

APÉNDICE B: PÁGINAS WEB

1085

El siguiente ejemplo muestra una página HTML con estilo:
<html>
<head>
<title>Título del documento</title>
<style type="text/css">
p {color: blue; margin-left: 20; border: solid; border-width: 2}
</style>
</head>
<body>
<h1>Ejemplo de un documento HTML</h1>
<hr>
<h3>El cuerpo del documento puede contener:</h3>
<h4>Texto, imágenes, sonido y órdenes HTML</h4>
<p>
HTML es un lenguaje utilizado para desarrollar páginas y
documentos web.
<p>
A diferencia de los lenguajes convencionales, HTML utiliza
una serie de etiquetas especiales intercaladas en un
documento de texto sin formato.
<br>
Dichas etiquetas serán
posteriormente interpretadas por los exploradores
encargados de visualizar la página o el documento web, con
el fin de establecer el formato.
<hr>
</body>
</html>

Cuando se muestre la página anterior, los dos párrafos, <p>, serán visualizados con los atributos definidos. Ahora bien, en este ejemplo, el contenido no está
separado de la forma de presentarlo. Para separarlo, podemos colocar la hoja de
estilo en un fichero (sólo los estilos, sin style), por ejemplo, en estilo.css:
/* estilo.css */
p {color: blue; margin-left: 20; border: solid; border-width: 2}

Una vez definida una hoja de estilos, podemos incorporarla a una página
HTML utilizando la etiqueta link que tiene la siguiente sintaxis:
<link rel="stylesheet" href="estilo.css" type="text/css">

Según lo explicado, el ejemplo anterior quedaría como se indica a continuación. Observe que la etiqueta link está incluida dentro de la cabecera:
<html>
<head>

1086

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

<title>Título del documento</title>
<link rel="stylesheet" href="estilo.css" type="text/css">
</head>
<body>
...
</body>
</html>

Clases
Cuando se muestre la página anterior, todos sus párrafos, <p>, serán visualizados
con los atributos definidos. Pero supongamos que sólo queremos personalizar algunos de ellos. ¿Cómo lo hacemos? Pues, definiendo distintas clases, en nuestro
caso, distintas clases de párrafos, para lo cual utilizaremos el atributo class. Por
ejemplo, la siguiente hoja de estilos permite personalizar un párrafo de dos formas, las cuales difieren en el color: azul con borde y ajustado a la izquierda, o
bien verde sin borde y centrado:
/* estilo.css */
p.azul {color: blue; margin-left: 20; border: solid; border-width: 2}
p.verde {color: green; margin-left: 20; text-align: center}

Este código define dos clases de párrafos: el párrafo azul (p.azul) y el verde
(p.verde).
Cuando apliquemos estos estilos a una página, los párrafos definidos con la
cabecera <p class="azul"> serán azules y los definidos como <p class="verde">
serán verdes. Por ejemplo:
<html>
<head>
<title>Título del documento</title>
<link rel="stylesheet" href="estilo.css" type="text/css">
</head>
<body>
<h1>Ejemplo de un documento HTML</h1>
<hr>
<h3>El cuerpo del documento puede contener:</h3>
<h4>Texto, imágenes, sonido y órdenes HTML</h4>
<p class="verde">
HTML es un lenguaje utilizado para desarrollar páginas y
documentos web.
<p class="azul">
A diferencia de los lenguajes convencionales, HTML utiliza
una serie de etiquetas especiales intercaladas en un
documento de texto sin formato.
<br>

APÉNDICE B: PÁGINAS WEB

1087

Dichas etiquetas serán
posteriormente interpretadas por los exploradores
encargados de visualizar la página o el documento web, con
el fin de establecer el formato.
<hr>
</body>
</html>

Otro caso puede ser que queramos que la mayoría de todos los párrafos sean
azules y unos pocos verdes, pero con el resto de las características iguales. En este
caso, también podríamos definir dos clases distintas, pero hay una forma mejor:
usar el parámetro id. Por ejemplo:
/* estilo.css */
p {color: blue; margin-left: 20; border: solid; border-width: 2}
#verde {color: green}

Cuando apliquemos estos estilos a una página, los párrafos definidos con la
cabecera <p> serán azules y los definidos como <p id="verde"> serán verdes.
Los exploradores agregan también varias clases, conocidas como pseudoclases, que definen varios usos para un mismo elemento. Por ejemplo, podemos aplicar estilo a los enlaces para que muestren colores diferentes en función de que aún
no hayan sido visitados o sí lo hayan sido. Para ello, CSS define las pseudoclases:


Enlaces normales:
Enlaces visitados:
Enlaces activos:

a:link {atributos}
a:visited {atributos}
a:active {atributos}

Por ejemplo, el siguiente código utiliza las pseudoclases link y visited con el
elemento <a> para definir el color azul para el enlace normal y el color magenta
para el enlace visitado. Observe la sintaxis; al contrario que con las clases reales,
ahora se utilizan dos puntos (:).
a:link {color: blue}
a:visited {color: magenta}

Etiquetas <span> y <div>
Puede que, a veces, no queramos modificar el comportamiento de un elemento,
sino aplicar un estilo completo a una determinada sección de una página. Esto podremos hacerlo utilizando las etiquetas <span> y <div>.

1088

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

Para definir estilos en secciones reducidas de una página se utiliza la etiqueta
span. Admite los atributos style, id y class. Lo vemos con un ejemplo. El siguiente párrafo visualizará determinadas palabras en color azul y en cursiva:
<p>
A diferencia de los lenguajes convencionales,
<span style="color:blue; font-style:italic">
HTML utiliza una serie de etiquetas especiales intercaladas
en un documento de texto sin formato.
</span>
</p>

La etiqueta div es similar a span, con la diferencia de que div define un elemento a nivel de bloque; esto es, una sección de una página que, a su vez, puede
contener cabeceras, párrafos, tablas, e incluso otras divisiones, lo que hace a esta
etiqueta ideal para definir distintas secciones en un documento (capítulo, resumen,
notas, etc.). Por ejemplo:
<div class=notas>
<h1>Divisiones</h1>
<p>El elemento div permite utilizar los atributos align, class,
style, id y otros muchos.</p>
<p>Definir un bloque, es útil para construir diferentes secciones
en un documento.</p>
<p>Es necesario especificar la etiqueta de cierre</p>
</div>

La etiqueta div es ideal también para definir capas, entendiendo por capa una
sección de un documento para la que se ha definido un comportamiento independiente. Algunos atributos típicos utilizables con capas son: position, posición absoluta en la página, left y top, distancia desde los bordes izquierdo y superior de
la página, width y height, anchura y altura de la capa, z-index, para indicar qué
capas se ven encima de qué otras, clip, para recortar una capa y hacer que no sean
visibles partes de ella, o visibility, para indicar si la capa se puede ver en la página o permanece oculta al usuario.
A continuación mostramos un ejemplo sencillo: poner un título con el efecto
de sombra. Este ejemplo se ha construido en base a dos bloques con el mismo
contenido: uno para visualizar el título en color azul y otro para visualizar la sombra en color negro (se trata del mismo título, pero desplazado un píxel respecto
del anterior).

APÉNDICE B: PÁGINAS WEB

1089

El fichero de estilos que vamos a utilizar incluye dos clases, título y sombra.
Obsérvese que delante del nombre de la clase ponemos solamente un punto, ya
que en este caso no se trata de una clase definida para un determinado elemento:
/* estilos.css */
.titulo {color: blue; position:absolute; margin-left: 20;
margin-top: 20; font-size: 32; font-weight: bolder}
.sombra {color: black; position:absolute; margin-left: 21;
margin-top: 21; font-size: 32; font-weight: bolder}

Y una página ejemplo que utilice este fichero de estilos puede ser la siguiente:
<html>
<head>
<title>Capas</title>
<link rel="stylesheet" href="estilos.css" type="text/css">
</head>
<body>
<div class="sombra">
TÍTULO DE LA PÁGINA
</div>
<div class="titulo">
TÍTULO DE LA PÁGINA
</div>
</body>
</html>

XML
XML (Extensible Markup Language - lenguaje extensible para análisis de documentos) está convirtiéndose rápidamente en el estándar para el intercambio de datos en la Web. Como en el caso de HTML, los datos se identifican utilizando
etiquetas, y a diferencia de HTML las etiquetas indican lo que los datos significan
en lugar de cómo visualizar los datos. Por ejemplo, la fecha de nacimiento de una
persona se puede colocar en un párrafo HTML así:
<p>01/01/2004</p>

Sin embargo, la etiqueta de párrafo no describe que el dato es la fecha de nacimiento. Simplemente indica al navegador que el texto que aparece entre las etiquetas se debe mostrar en un párrafo. En cambio, el dato sí queda descrito en una
línea como la siguiente:
<FechaNacimiento>01/01/2004</FechaNacimiento>

1090

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

El lenguaje XML es un lenguaje que se utiliza para crear otros lenguajes que
definen los componentes de un documento. Por ejemplo, podríamos utilizar XML
para describir una persona: fecha de nacimiento, sexo, color, altura, peso, etc.
La creación de un documento XML tiene dos partes: crear un esquema XML
y crear el documento utilizando los elementos definidos en el esquema.
El esquema se puede considerar como un diccionario que define las etiquetas
que se utilizan para describir los elementos de un documento. Estas etiquetas son
similares a las etiquetas HTML, pero con la diferencia de que quien crea el esquema crea los nombres y los atributos de las etiquetas. Por ejemplo:
<foto origen="ceballos.jpg">Profesor Ceballos</foto>

La realidad es que un navegador no puede leer y mostrar un documento XML.
Pero sí puede convertir un documento XML en un documento HTML mediante
una hoja de estilos XSTL (Extensible Stylesheet Language Transformation). Una
hoja de estilos se compone de una o más definiciones de plantillas que procesa un
procesador XSLT cuando la etiqueta de la plantilla corresponde a un componente
del documento XML.

XHTML
XHTML (Extensible HyperText Markup Language - lenguaje mejorado para la
escritura de páginas web) es la siguiente generación de HTML que incorpora muchas de las características de XML. Utiliza prácticamente todos los elementos de
HTML, pero impone nuevas reglas; por ejemplo, es sensible a mayúsculas y minúsculas, toda etiqueta de apertura tiene que tener una etiqueta de cierre, etc.

PÁGINAS WEB DINÁMICAS
El lenguaje HTML que hemos visto en los apartados anteriores es suficiente para
visualizar documentos, imágenes, sonidos y otros elementos multimedia; pero el
resultado es siempre una página estática.
Entonces, ¿qué podemos hacer para construir una página dinámica?, entendiendo por página dinámica una página que actualiza su contenido mientras se visualiza.
Haciendo un poco de historia, una de las primeras formas que se encontraron
para dar dinamismo a las páginas HTML fue la CGI (Common Gateway Interface). Esta interfaz permite escribir pequeños programas que se ejecutan en el servidor para aportar un contenido dinámico. El resultado es un código HTML, que se

APÉNDICE B: PÁGINAS WEB

1091

incluye en la página web justo antes de ser enviada al cliente. Pese a que la CGI
es fácil de utilizar, en general, no es un buen sistema porque cada vez que un
cliente solicita una página con algún programa basado en esa interfaz, el programa
tiene que ser cargado en memoria para ser ejecutado, lo que ocasiona un tiempo de
espera elevado. Además, si el número de usuarios es elevado, los requerimientos de
memoria también serán elevados, ya que todos los procesos se deben poder cargar
en memoria y ejecutar.
Una alternativa a la CGI fue ISAPI (Internet Server Application Programming Interface). Esta API proporciona la funcionalidad necesaria para construir
una aplicación servidora de Internet. A diferencia de CGI que trabaja sobre ejecutables, ISAPI trabaja sobre DLL. Esta diferencia hace que ISAPI sea un sistema
más rápido, ya que por tratarse de una biblioteca dinámica sólo será cargada una
vez y podrá ser compartida por múltiples procesos, lo que supone pocos requerimientos de memoria.
Posteriormente, las técnicas anteriores fueron sustituidas por la incorporación
de secuencias de órdenes (scripts) ejecutadas directamente en el interior de la página HTML. Esto es, en lugar de consultar al servidor acerca de un ejecutable, el
explorador puede ahora procesar las secuencias de órdenes a medida que carga la
página HTML. El tratamiento de estas secuencias de órdenes puede hacerse tanto
en el servidor web como en el cliente. Los lenguajes más comunes para la escritura de secuencias de órdenes son JavaScript y VBScript.
Apoyándose en la técnica anterior y en un intento de potenciar la inclusión de
contenido dinámico en páginas web, Microsoft lanza una nueva tecnología, las
páginas ASP (Active Server Page - Página activa del servidor o activada en el servidor). Una página ASP, dicho de una forma sencilla, es un fichero .asp que puede contener: texto, código HTML, secuencias de órdenes y componentes ActiveX.
Con tal combinación se pueden conseguir de una forma muy sencilla páginas dinámicas y aplicaciones para la Web muy potentes. Un inconveniente de esta tecnología es que su propietaria es Microsoft y solamente está disponible para el
servidor IIS (Internet Information Server) que se ejecuta sobre plataformas Windows. También es cierto que hay herramientas que permiten utilizar ASP sobre un
servidor Apache en plataformas Unix, pero, hoy por hoy, los componentes ActiveX no están disponibles para plataformas que no sean Microsoft Windows.
Cuando un cliente solicita una ASP, el servidor la intenta localizar dentro del
directorio solicitado, igual que sucede con las páginas HTML. Si la encuentra,
ejecutará las rutinas VBScript o JScript que contenga. Cuando el servidor ejecuta
estas rutinas, genera un resultado consistente en código HTML estándar que sustituirá a las rutinas VBScript o JScript correspondientes de la página ASP. Una vez
procesada la página, el servidor envía al cliente el contenido de la misma en
HTML estándar, siendo así accesible desde cualquier navegador.

1092

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

También, cuando Sun Microsystems presentó Java, uno de los aspectos que
más llamó la atención fueron los applets: pequeños programas interactivos que
son ejecutados por un navegador. Esto supuso una alternativa más para crear páginas web dinámicas, ya que esta tecnología permite vincular código estándar Java con las páginas HTML que luego utilizaremos como interfaz de usuario,
dotándolas de contenido dinámico e interactivo. Posteriormente, Sun Microsystems introdujo los servlets. Mientras que los applets incorporaron funcionalidad
interactiva a los navegadores, los servlets la incorporaron a los servidores. Los
servlets es la alternativa de Sun Microsystems para sustituir a la programación
CGI.
Si comparamos la tecnología ASP o los servlets con la CGI o con la ISAPI,
llegaremos a la conclusión de que es bastante más sencilla y más potente.
Actualmente, la tecnología ASP ha sido sustituida por ASP.NET, que es parte
integrante de Microsoft .NET Framework. ASP.NET es algo más que una nueva
versión de ASP; es una plataforma de programación web unificada que proporciona todo lo necesario para que podamos crear aplicaciones web. Al crear una
aplicación web, podemos elegir entre formularios web y servicios web XML, o
bien combinarlas. Todo esto lo estudiaremos en los próximos capítulos.
Los formularios web permiten crear páginas web basadas en formularios. Por
lo tanto, este tipo de aplicaciones son una alternativa más para crear páginas web
dinámicas.
Los servicios web XML proporcionan acceso al servidor de manera remota,
permitiendo el intercambio de datos en escenarios cliente-servidor utilizando estándares como HTTP y XML.
Las aplicaciones web se ejecutan en un servidor web configurado con los servicios de Internet Information Server (IIS). Sin embargo, para probar una aplicación web, no es necesario trabajar directamente con IIS, sino que se puede hacer a
través del servidor web integrado en Visual Studio. No obstante, si para probar
sus aplicaciones prefiere utilizar IIS, asegúrese de que lo tiene instalado. Para ello,
abra el panel de control, seleccione “agregar o quitar programas”, haga clic en
“agregar o quitar componentes Windows” y si no tiene instalado el componente
Servicios de Internet Information Server, instálelo. IIS debe instalarse antes de
Microsoft .NET Framework SDK.

APÉNDICE C

 F.J.Ceballos/RA-MA

INTERNACIONALIZACIÓN
Si pensamos distribuir nuestra aplicación a un público internacional, deberemos
tener en cuenta una serie de puntos durante las fases de diseño y desarrollo. Los
servicios integrados en .NET Framework facilitan el desarrollo de aplicaciones
que se adaptan a distintas configuraciones de idioma.
Preparar una aplicación para su uso mundial tiene dos partes: diseñar la aplicación para que pueda adaptarse a distintas referencias culturales (globalización)
y traducir los recursos para una referencia cultural específica (localización).

GLOBALIZACIÓN
La globalización es el proceso de diseño y desarrollo de una aplicación que permite el uso de interfaces de usuario en distintos idiomas.
El espacio de nombres System.Globalization contiene clases que definen información relativa a la referencia cultural, incluido el idioma, el país o región, los
calendarios utilizados, los modelos de formato de fecha, moneda y números, y el
criterio de ordenación de las cadenas. Concretamente, la clase CultureInfo representa una referencia cultural específica.

LOCALIZACIÓN
Los recursos de la aplicación que requieren una localización tienen que ser independientes del resto del código de la aplicación. Para ello, el código ejecutable se
ubicará en el ensamblado principal de la aplicación, mientras que en los ficheros
de recursos sólo se ubicarán los recursos: cadenas, mensajes de error, cuadros de

1094

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

diálogo, menús o recursos de objetos incrustados, entre otros. Finalmente, se traduce la interfaz de usuario a los idiomas de destino.
.NET Framework SDK proporciona la herramienta winres.exe (editor de recursos de formularios Windows), que permite localizar rápidamente formularios
Windows para las referencias culturales de destino.

CLASE CultureInfo
La clase CultureInfo especifica un nombre único para cada referencia cultural
como una combinación de un código de referencia cultural (dos letras en minúsculas asociado con un idioma), y un código de referencia cultural secundaria (dos
letras en mayúsculas asociado con un país o región) separados por un guión (-).
Por ejemplo, “en-US” para el inglés de EEUU y “es-ES” para el español de España. Por ejemplo, el siguiente código muestra todas las referencias culturales por
medio del método GetCultures de CultureInfo:
Imports System
Imports System.Globalization
Public Class CInfoCultura
Public Shared Sub Main()
Dim info As CultureInfo
For Each info In CultureInfo.GetCultures(CultureTypes.AllCultures)
' Mostrar todas las referencias culturales
Console.WriteLine("{0,-12} {1}", info, info.DisplayName)
Next info
End Sub
End Class

Siguiendo con el ejemplo anterior, vamos a añadir a la clase CInfoCultura un
método Cultura que muestre información de una cultura específica.
Public Shared Sub Cultura(ByVal sInfo As String)
Dim info As CultureInfo = New CultureInfo(sInfo)
Console.WriteLine("{0,-12} {1}", info, info.DisplayName)
Console.WriteLine("Formato de fecha: {0}", _
DateTime.Now.ToString(info.DateTimeFormat.ShortDatePattern))
Console.WriteLine("Separador de decimales: {0}", _
info.NumberFormat.CurrencyDecimalSeparator)
Console.WriteLine()
End Sub

Para invocar al método anterior, añada al método Main sentencias análogas a
las siguientes:

APÉNDICE C: INTERNACIONALIZACIÓN

1095

Cultura("en-US")
Cultura("es-ES")

Propiedad CurrentUICulture
La propiedad CurrentUICulture de CultureInfo devuelve la referencia cultural
de la interfaz de usuario actual. Por ejemplo:
Public Shared Sub CulturaActual()
Dim info As CultureInfo = Nothing
info = CultureInfo.CurrentUICulture
Console.Write("Cultura actual: ")
Console.WriteLine("{0, -12} {1}", info, info.DisplayName)
End Sub

También puede utilizar la propiedad CurrentUICulture de Thread.CurrentThread. Por ejemplo:
info = System.Threading.Thread.CurrentThread.CurrentUICulture

La clase ResourceManager utiliza esta propiedad para buscar recursos específicos de la referencia cultural durante la ejecución.
Para configurar la propiedad CurrentUICulture, se puede utilizar una referencia cultural neutra (por ejemplo, “en”) o específica (por ejemplo, “en-US”), o
la propiedad InvariantCulture. Por ejemplo, la siguiente línea establece la referencia cultural neutra “en” (inglés). Las referencias culturales neutras se asocian a
idiomas pero no a regiones.
Thread.CurrentThread.CurrentUICulture = New CultureInfo("en")

Y esta otra línea establece la referencia cultural específica “en-US” (inglés de
Estados Unidos):
Thread.CurrentThread.CurrentUICulture = New CultureInfo("en-US")

Propiedad CurrentCulture
La propiedad CurrentCulture de CultureInfo no es una configuración de idioma, sino que determina los formatos predeterminados para la fecha, hora, moneda
y números, el criterio de ordenación de texto, las comparaciones de cadenas y la
distinción entre mayúsculas y minúsculas. Sólo se puede establecer para una refe-

1096

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

rencia cultural específica o para InvariantCulture. Para establecer el valor de esta propiedad puede utilizar la propiedad Thread.CurrentThread. Por ejemplo:
Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")

Propiedad InvariantCulture
La propiedad InvariantCulture de CultureInfo no es una referencia cultural
neutra ni específica. Es un tercer tipo que no tiene en cuenta la referencia cultural.
Se encuentra asociada al idioma inglés pero a ningún país o región. Se puede utilizar InvariantCulture en cualquier método que requiera una referencia cultural.
No obstante, deberá utilizarla únicamente para los procesos que requieran resultados independientes de la referencia cultural.

APLICACIÓN EJEMPLO
Vamos a realizar un ejemplo sencillo que nos enseñe a internacionalizar una aplicación. Como podremos comprobar, será el propio Visual Studio el que se encargue de adaptar cada elemento de la interfaz a cada idioma.
Nuestra aplicación utilizará como idioma predeterminado el español y, además, el idioma inglés. La interfaz gráfica de la misma constará de dos formularios: el formulario principal y el formulario “Acerca de”. El formulario principal
incluirá una barra de menús, con los menús “Archivo”, “Opciones” y “Ayuda”,
una caja de texto, un botón y una barra de estado. El menú “Archivo” incluirá una
orden “Salir”, “Opciones” contendrá un submenú “Idioma” con las órdenes “Español” e “Inglés”, y el menú “Ayuda” la orden “Acerca de...”.

Generar ficheros de recursos automáticamente
Para empezar crearemos una nueva aplicación Windows. Se mostrará el formulario Form1.
A continuación, asignamos a la propiedad Localizable de Form1 el valor
True. De esta forma, todas las propiedades persistirán en el fichero de recursos,
con la ventaja de que este fichero se puede traducir sin modificar el código.
La propiedad Language asume un valor que hace referencia al lenguaje predeterminado (Default), en nuestro caso al español. Por lo tanto, en principio, no
modificaremos el valor de esta propiedad.

APÉNDICE C: INTERNACIONALIZACIÓN

1097

Añadimos al formulario todos los recursos enumerados anteriormente. Estos
recursos se almacenarán en el fichero Form1.resx.

Para realizar el diseño en otro idioma, asignamos a la propiedad Language
dicho idioma; en nuestro caso, le asignamos el valor English. El diseñador mostrará en la pestaña “Form1.vb[Diseñar – Inglés]”. A continuación, modificaremos
todos los elementos que deben mostrar su contenido en inglés (menús, aceleradores, botones, etc.). Obsérvese que podemos cambiar el valor, no sólo de la propiedad Text, sino de otras muchas propiedades (ShortcutKeys, Size, Location, etc.).

Cuando finalicemos este proceso, podremos observar en el explorador de soluciones que se ha añadido un nuevo fichero de recursos, Form1.en.resx, que contiene los recursos en inglés.

1098

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

En este instante (propiedad Language con valor English) estamos visualizando el formulario en la versión inglés. Si cambiamos el valor de la propiedad Language a “Predeterminado - Default”, volveremos a la versión en español.
Una vez finalizado el diseño del formulario principal en sus distintos idiomas,
haremos lo mismo con el resto de los formularios de la aplicación; en nuestro caso, con el formulario “Acerca de”:

Los controladores para las órdenes “Salir” y “Acerca de” serán los siguientes:
Private Sub ArchivoSalir_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles ArchivoSalir.Click
Close()
End Sub
Private Sub AyudaAcercaDe_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles AyudaAcercaDe.Click
Dim dlg As AcercaDe = New AcercaDe()
dlg.Show()
End Sub

APÉNDICE C: INTERNACIONALIZACIÓN

1099

Mostrar recursos específicos
Para mostrar los recursos de la aplicación bajo una referencia cultural determinada
utilizaremos el siguiente código:
Imports System.Globalization
Imports System.Threading
' ...
Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")
Thread.CurrentThread.CurrentUICulture = New CultureInfo("en-US")

La asignación del objeto CultureInfo deberá hacerse antes de invocar al método InitializeComponent, ya que el gestor de recursos ResourceManager determinará qué recursos recuperar en función de la propiedad CultureInfo.CurrentUICulture del subproceso actual. La clase ResourceManager proporciona acceso a recursos específicos de la referencia cultural en tiempo de ejecución.
En nuestro ejemplo, este proceso tendremos que ejecutarlo desde las órdenes
“Español” e “Inglés” del menú “Opciones”:
Private Sub OpcionesIdiomaEspañol_Click( _
ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles OpcionesIdiomaEspañol.Click
Thread.CurrentThread.CurrentCulture = New CultureInfo("es-ES")
Thread.CurrentThread.CurrentUICulture = New CultureInfo("es-ES")
Me.Controls.Clear()
Me.InitializeComponent()
End Sub
Private Sub OpcionesIdiomaInglés_Click( _
ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles OpcionesIdiomaInglés.Click
Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")
Thread.CurrentThread.CurrentUICulture = New CultureInfo("en-US")
Me.Controls.Clear()
Me.InitializeComponent()
End Sub

Obsérvese que antes de invocar al método InitializeComponent eliminamos
los controles actuales del formulario (colección Controls), porque si no, al crearlos de nuevo, se duplicarían.

1100

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

Agregar ficheros de recursos de forma manual
Ficheros análogos a Form1.en.resx pueden ser también añadidos y editados manualmente. Para ello, simplemente hay que hacer clic con el botón secundario del
ratón en el nombre del proyecto y seleccionar Agregar nuevo elemento del menú
contextual. Seleccionar en el diálogo que se visualiza la plantilla Archivo de recursos y escribir un nombre para el fichero .resx. Finalizar haciendo clic en el botón Aceptar. El nombre del fichero tendrá la sintaxis siguiente:
RaízDelNombre.idioma-region.resx

El fichero se agregará al proyecto en el Explorador de soluciones y se abrirá
automáticamente el diseñador que le permitirá editar el fichero. Se obtendrá acceso a estos recursos cada vez que la aplicación no pueda encontrar recursos más
adecuados para la referencia cultural de la interfaz de usuario.
En cualquier instante durante el diseño, podemos abrir y editar un fichero
.resx haciendo clic con el botón secundario del ratón en el nombre del mismo y
seleccionando Ver diseñador en el menú contextual.
Como ejemplo, vamos a añadir los ficheros .resx con los recursos especificados a continuación:
Nombre del fichero .resx

Nombre del recurso

Valor

Form1.es-ES.resx
Form1.en-US.resx

cad01
cad01

Hola
Hello

La cadena de caracteres nombrada cad01 será mostrada en la caja de texto de
Form1 cuando el usuario haga clic en el botón Aceptar.
El fichero Form1.es-ES.resx contendrá recursos que son específicos del español hablado en España, y el fichero Form1.en-US.resx contendrá recursos que son
específicos del inglés hablado en EEUU.
Para acceder a estos recursos, añada a Form1 el controlador del evento Click
del botón y edítelo como se indica a continuación:
Imports System.Resources
' ...
Private Sub btAceptar_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btAceptar.Click
Dim rm As Resources.ResourceManager = _
New Resources.ResourceManager("InfoCulturaWin.Form1", _
GetType(Form1).Assembly)

APÉNDICE C: INTERNACIONALIZACIÓN

1101

Me.TextBox1.Text = rm.GetString("cad01")
End Sub

El constructor de ResourceManager toma dos argumentos: raíz del nombre
de los recursos, es decir, el nombre del fichero de recursos sin la referencia cultural ni la extensión .resx, y el ensamblado principal. Obsérvese que para el nombre
del fichero se ha especificado el espacio de nombres.
Para acceder al recurso String cad01 especificado en la referencia cultural actual, se invoca al método GetString de ResourceManager.
De forma predeterminada, el objeto ResourceManager distingue entre mayúsculas y minúsculas. Si no se desea hacer esta distinción, hay que asignar true a
la propiedad IgnoreCase de ResourceManager.
Si ahora compila y ejecuta la aplicación y hace clic en el botón Aceptar de
Form1, observará que la caja de texto mostrará el recurso cad01 correspondiente
al idioma elegido.
¿Por qué no hemos añadido estos recursos a los ficheros .resx generados automáticamente cuando diseñamos la aplicación? Porque al ser administrados por
el diseñador de formularios, los recursos que introduzcamos serán eliminados la
próxima vez que el diseñador modifique esos ficheros.
Como alternativa, podríamos añadir estos recursos al fichero Resources.resx
del proyecto, pero entonces tendríamos que especificarlos de forma análoga a como se indica a continuación:
Nombre del fichero .resx

Nombre del recurso

Valor

Resources.resx
Resources.resx

cad01_es
cad01_en

Hola
Hello

Ahora, para acceder a estos recursos, tendríamos que escribir el controlador
del evento Click así:
Imports System.Resources
' ...

1102

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

Private Sub btAceptar_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btAceptar.Click
Dim rm As Resources.ResourceManager = _
New Resources.ResourceManager("InfoCulturaWin.Resources", _
GetType(Form1).Assembly)
If (CultureInfo.CurrentUICulture.Name = "es-ES") Then
Me.TextBox1.Text = rm.GetString("cad01_es")
Else
Me.TextBox1.Text = rm.GetString("cad01_en")
End If
End Sub

APÉNDICE D

 F.J.Ceballos/RA-MA

.NET PARA LINUX
Los desarrolladores sobre GNU/Linux pueden ahora también desarrollar aplicaciones multiplataforma basadas en .NET gracias al proyecto Mono.
¿Qué es Mono? Es un proyecto para construir una plataforma de desarrollo libre, basada en Linux, compatible con Microsoft .NET. Durante su desarrollo, ha
contado con el apoyo de algunos pesos pesados de la industria informática, sobre
todo del mundo Linux. Es el caso de Ximian, empresa dirigida por el mejicano
Miguel de Icaza, que se mostró interesada en colaborar con el desarrollo de este
entorno de programación desde el principio. Más tarde, la compañía norteamericana Novell adquirió esta empresa y se constituyó en uno de sus principales patrocinadores.
Mono en su versión 3.x, incluye un compilador para C# y bibliotecas de ejecución (runtimes) para Java y Visual Basic, así como otras herramientas de ayuda
al desarrollo de aplicaciones multiplataforma (cross-platform; para varias computadoras/sistemas operativos).
Mono 3.x se encuentra disponible para Linux, Mac OS X y Windows. Para
más detalles sobre el futuro de este proyecto visite la página Web
http://www.mono-project.com. En esta página encontrará también un enlace,
Downloads, desde el cual podrá descargarse el software correspondiente a Mono
para las distintas plataformas anteriormente comentadas, así como instrucciones
para su utilización.
Si está interesado en desarrollar sobre una máquina Linux utilizando Mono,
puede encontrar información precisa y ejemplos en mi libro Aplicaciones .NET
multiplataforma (proyecto Mono); este libro, aunque esté escrito en C#, no es más
que una extensión a esta enciclopedia para que vea cómo puede aplicar todo lo
aprendido en la misma, sobre una máquina Linux con Mono.

ÍNDICE

.NET, 4, 8 
.NET Framework, 5 


@ Page, 781, 971 
@ Register, 977 


a, etiqueta HTML, 1073 
abort, 1004 
Abort, 398 
abrir documento, 354 
acceder a un nodo, 260 
AcceptButton, 83, 85, 178, 368 
AcceptsReturn, 140 
AcceptsTab, 140 
acceso a datos desde un formulario web, 819 
acceso a datos utilizando componentes, 560 
acceso anónimo, 924 
acceso anónimo, deshabilitar, 926 
acceso conectado a bases de datos, 509 
acceso desconectado a bases de datos, 555, 559 
accesos directos, 1073 
Access, 502 
aceleradores, 129 
Acerca de, 181, 328 
acoplar control, 140 

acoplar un control a su contenedor, 223 
action, 1077, 1079 
Activate, 63, 64 
Activated, 63 
ActiveForm, 63 
ActiveMdiChild, 346 
actualizar las filas, 680 
actualizar y eliminar filas, EntityDataSource, 839 
actualizar y eliminar filas, modelo de enlace, 852 
adaptador, 504 
Add, 55, 126, 231, 583 
Add, colección, 162 
Added, 499 
AddHandler, 61 
AddNew, 483 
AddRange, 127 
address, 882 
administración de sitios web, 941 
ADO.NET, 9, 496 
AfterSelect, 263 
agregar datos, 910 
AJAX, 1001, 1028 
Ajax Control Toolkit, 979 
AJAX, envío de datos utilizando el método POST, 
1011 
AJAX, llamadas fuera de dominio, 1010 
AJAX, llamadas que producen errores o que no 
retornan, 1010 
align, 1074 
alineación del texto, 54, 364 
alisado, 302 
AllowFullOpen, 221 

1106

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

AllowMerge, 345 
AllowsTransparency, 65 
alt, 1074 
ámbito de aplicación, 810 
ámbito de sesión, 811 
Anchor, 223, 367 
animación, 336 
añadir menú, 128 
añadir texto a una caja de texto, 91 
añadir un botón a la barra de h., 135 
añadir un control a la barra de estado, 137 
añadir un nuevo registro, 582 
añadir un usuario que tenga una función, 954 
añadir una nueva fila a una rejilla, 482 
aplicación ASP.NET cliente de un servicio web, 
992 
aplicación web, 1092 
aplicación web de IIS, 744 
aplicación, ciclo de vida, 71 
aplicación, crear, 16 
aplicación, depurar, 33 
aplicación, desarrollo, 82 
aplicación, instanciar sólo una vez, 75 
aplicaciones de consola, 1046 
aplicaciones web, 774 
App.config, 67 
App_Browsers, 778 
App_Code, 749, 778 
App_Data, 778 
App_GlobalResource, 778 
App_LocalResources, 778 
App_Themes, 778, 980 
App_WebReferences, 778 
Appearance, 185, 189 
AppendText, 144 
applets, 1092 
Application, 50, 63, 71, 803 
Application_Error, 841 
ApplicationExit, 72 
árbol, 254 
árbol, acceder a un nodo, 260 
árbol, añadir imágenes para los nodos, 257 
árbol, añadir nodos, 256 
árbol, añadir y borrar un nodo, 264 
árbol, arquitectura, 255 
árbol, iniciar, 258 
árbol, nodos, 255 
árbol, personalizar, 269 
árbol, recorrer, 264 
árboles de expresiones, 629 

archivo de aplicación de ASP.NET, 796 
área cliente, 64 
área de texto, 1080 
argumentos en la línea de órdenes, 75, 1051 
arrastrar y soltar, 366 
ArrayList, 442 
asincrónico, modelo, 893 
asociación, 657 
ASP, 1091 
ASP.NET, 725, 1092 
ASP.NET AJAX, 1018 
ASP.NET, acceso a los recursos, 790 
ASP.NET, arquitectura, 920 
ASP.NET, carpetas, 778 
ASP.NET, instalación, 1057 
aspnet_compiler, 797 
aspnet_regiis, 1057 
assembly, 11 
Assembly, 70 
AsyncPostBackErrorMessage, 1021 
AsyncPostBackTimeout, 1021 
AsyncPostBackTrigger, 1030 
ataques de inyección SQL, 513 
atributos de anotación de datos, 704, 710 
atributos globales de una aplicación, 70 
atributos proveedores de valores, 848 
Attach, 683, 903 
AttachDBFilename, 1052 
autenticación ASP.NET, 927 
autenticación básica con conexión SSL, 962 
autenticación de IIS, 927 
autenticación mediante formularios, 934 
autenticación Windows, 926 
authentication, 927 
authorization, 927, 930, 956 
AutoEventWireup, 751, 785 
AutoPostBack, 786, 787, 1024 
AutoResetEvent, 410, 414 
autoridad de certificación, 962 
autorización, 930 
AutoValidate, 96 
ayuda dinámica, 18 


BackColor, 109 
BackgroundWorker, 404 
barra de desplazamiento, 25, 44, 203 
barra de desplazamiento, eventos, 206 
barra de direcciones, 1068 

ÍNDICE

barra de estado, 136 
barra de herramientas, 134 
barra de herramientas y de estado, 361 
barra de menús, 24, 43, 124 
barra de menús, crear, 126 
barra de progreso, 208 
Barra de título, 44 
barras de desplazamiento, 323 
barras de herramientas, fusionar, 351, 371 
barras, añadir, 322 
base de datos, 487 
base de datos accedida desde un servicio web, 
991 
base de datos basada en servicio, 597 
base de datos local, 597 
base de datos SQL Server, crear, 588 
base de datos, añadir las tablas, 589, 598 
base de datos, crear, 597, 1052 
base de datos, diagrama visual, 600, 601 
base de datos, navegar, 579 
bases de datos, mover, 1052 
BeginEdit, 548 
BeginInvoke, 400 
BeginUpdate, 157, 194 
biblioteca de clases, 9 
Bin, 778 
binary, 897 
BinaryExpression, 632 
Bind, 756 
binding, 882 
Binding, 431 
BindingComplete, 438 
BindingContext, 441 
BindingList, 440 
BindingList, propiedades, 552 
BindingListView, 471, 673 
BindingManagerBase, 441 
BindingNavigator, 586 
BindingSource, 432, 434, 440, 451, 453, 460, 
463, 544, 578, 581, 612 
BindItem, 756 
Bitmap, 296, 322 
bloquear los controles, 29 
BMP, 321 
body, 1069 
Bold, 364 
border, 1083 
borrar datos, 911 
borrar registros en una tabla, 491 
borrar tabla de la base de datos, 491 

1107

borrar un control, 27 
borrar un registro, 584 
botón borrar, 1079 
botón de opción, 24, 188, 1078 
botón de pulsación, 23, 56, 82 
botón enviar, 1079 
botón predeterminado, 83, 85, 178 
br, 1070 
Brush, 301 
bucle de mensajes, 46 
buscar en una lista, 194 
buscar un registro, 584 
Button, 53, 81, 82 
ButtonBase, 81 


CA, 962 
Cache, 816 
caché, 812 
caché con SQL Server, 816 
cadena de consulta, 806 
caja de clave de acceso, 1078 
caja de diálogo Abrir, 217 
caja de diálogo Color, 220 
caja de diálogo de entrada, 174 
caja de diálogo Fuente, 221 
caja de diálogo Guardar, 219 
caja de diálogo modal o no modal, 170 
caja de diálogo modal, cerrar, 180 
caja de diálogo no modal, cerrar, 236 
caja de diálogo para mostrar un mensaje, 170 
caja de diálogo, crear, 177 
caja de diálogo, mostrar, 178 
caja de diálogo, recuperar datos, 179 
caja de herramientas, 22 
caja de imagen, 24, 320 
caja de imagen, Image, 324, 325 
caja de texto, 24, 82, 1077 
caja de texto multilínea, 139 
caja de texto, seleccionar el contenido, 90 
cajas de diálogo estándar, 216 
cajas de diálogo personalizadas, 176 
calculadora, 105 
calendario, 25 
callback, 1004 
cambios en los datos, 675 
cambios en los datos, notificar, 433 
cambios, seguimiento, 695 
campos, 487 

1108

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

Cancel, 96 
cancelar una llamada asíncrona, 1033 
CancelAsync, 407 
CancelButton, 178, 368 
CancelEdit, 548 
CancelEventArgs, 96 
CancellationPending, 407 
CanRedo, 360 
CanUndo, 143, 154, 360 
capa de acceso a datos, 537 
capa de lógica de negocio, 541 
capa de presentación, 533 
capa de presentación, desacoplar, 547 
capa de presentación, lógica, 544 
capas de servicios de la red, 1062 
cargar imagen, 324 
carpeta virtual, 741 
carpetas ASP.NET, 778 
cascada, 362 
cascada, operaciones en, 687 
casilla de verificación, 24, 184, 1078 
Category, 379 
CellBeginEdit, 547 
CellClick, 253 
CellDoubleClick, 482 
CellEnter, 467 
CellFormatting, 247 
Cells, 244 
CellValidated, 478 
CellValidating, 478 
center, 1075 
CenterParent, 177 
centrar ventana, 283 
cerrar, 44 
cerrar formulario, 129 
certificado de cliente, 963, 966 
certificado de cliente es rechazado, 968 
certificado de servidor, 961, 964 
certificados, generar o solicitar, 963 
CGI, 1090 
ChangePassword, control, 951 
ChangeTracker, 678, 696 
chat, 915 
CheckBox, 53, 81, 184 
Checked, 153, 185, 189 
CheckedChanged, 187, 192 
CheckedListBox, 198 
CheckOnClick, 153 
CheckState, 185 
CheckStateChanged, 188 

ciclo de vida de una aplicación, 71 
ciclo de vida de una página web, 784 
clase, 57 
clase Application, 50 
clase Binding, 431 
clase Bitmap, 296, 322 
clase Button, 53 
clase Cache, 816 
clase CheckBox, 53, 184 
clase CheckedListBox, 198 
clase Clipboard, 142 
clase Color, 109 
clase ColorDialog, 220 
clase ColorMatrix, 318 
clase ComboBox, 54, 198 
clase ConfigurationManager, 827 
clase Control, 82 
clase Convert, 192 
clase ConvertEventArgs, 437 
clase CultureInfo, 1094 
clase Cursor, 329 
clase Cursors, 329 
clase DataGridView, 242 
clase DataGridViewColumn, 243 
clase DataGridViewRow, 243 
clase DataRow, 499 
clase DataTable, 499 
clase DbContext, 662 
clase de entidad, 661, 700 
clase Debug, 129 
clase EventWaitHandle, 413 
clase FontDialog, 222 
clase Form, 48 
clase Graphics, 296 
clase GroupBox, 188 
clase Image, 322 
clase Label, 53 
clase ListBox, 54, 193 
clase ListView, 269 
clase Membership, 953 
clase MembershipUser, 953 
clase MenuStrip, 126 
clase Metafile, 322 
clase OpenFileDialog, 217 
clase Page, 784 
clase Panel, 188 
clase Point, 55 
clase ProgressBar, 208 
clase RadioButton, 54, 188 
clase Regex, 102, 438 

ÍNDICE

clase ResourceManager, 132 
clase ScrollBar, 54, 203 
clase seriable, 229 
clase Size, 50, 55 
clase TextBox, 53, 141 
clase TextBoxBase, 143 
clase Thread, 395 
clase Timer, 224 
clase TimeSpam, 226 
clase ToolStrip, 121 
clase ToolStripButton, 135 
clase ToolStripItem, 121 
clase ToolStripItemCollection, 127 
clase ToolStripMenuItem, 126 
clase ToolStripSeparator, 128 
clase TrackBar, 207 
clase TreeNode, 255 
clase TreeView, 254 
clase Type, 263 
clase UserControl, 375, 976 
clase WaitHandle, 412 
clase, definición parcial, 86 
clases, 9 
clases POCO, 701 
clave de un nodo, 255 
clave pública, 959 
Clear, 144, 197 
ClearError, 841 
clearTimeout, 1011 
clic en un botón, 469 
clic en un botón, simular, 117, 583 
clic sobre un botón, 583 
Click, 46, 87 
Client certificate revoked, 968 
cliente servidor, 723 
cliente WCF, 884 
ClientScript, 1017 
ClientSize, 50 
ClientWins, 693 
clipboard, 327 
Clipboard, 142 
Close, 65, 129, 180, 183, 504 
CLR, 9 
CLS, 6 
code, 1071 
Code First, 700 
Code First, convenciones, 704 
CodeFile, 781 
código administrado, 11 
código intermedio, 9 

1109

código no administrado, 11 
colección, 162 
colección como origen de datos, 440 
colección ConstraintCollection, 499 
colección ControlBindingsCollection, 579 
colección DataColumnCollection, 499 
colección DataRelationCollection, 499 
colección DataRowCollection, 499, 583 
colección DataTableCollection, 499 
colección de elementos, 24 
colección jerárquica, 25 
colección, añadir, 197 
colección, borrar, 197 
colección, borrar todo, 197 
colección, insertar, 197 
colocar el control, 29 
Color, 109, 220, 299 
color, establecer, 109 
Color, propiedad, 221, 222 
ColorDialog, 217, 220 
ColorMatrix, 318 
columnas, 487 
ColumnCount, 254 
Columns, 243 
Columns de ListView, 272 
COM, 12 
COM+, 13 
combinar menús, 345 
ComboBox, 54, 81, 198 
Command, 500, 503 
CommandBuilder, 529 
CommandField, 866 
CommandName, 765 
CommonDialog, 216 
compilador JIT, 11 
Complete, 613 
Component, 80 
componente, 80 
componentes de acceso a datos, 531 
concurrencia, 556, 689, 895 
ConcurrencyCheck, 691 
ConcurrencyMode, 689 
conexión abierta/cerrada, 663 
conexión, probar, 508 
configuración de la aplicación, 67 
configuración, fichero, 528, 927 
configurar el almacenamiento en caché, 813 
configurar IIS, 928 
Configuration, 697, 927 
ConfigurationManager, 528, 827 

1110

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

confirmar, 173 
conjunto de datos, 498 
conjunto de datos, crear, 566, 590 
Connection, 500 
ConnectionStrings, 528, 827 
ConstantExpression, 632 
Constraint, 499 
ConstraintCollection, 499 
construir controles, 373 
consultas parametrizadas, 838 
contenedor, 24 
contenedor UpdatePanel, 1028 
contenedor UpdateProgress, 1032 
Content, 917, 972, 1024 
ContentAlignment, 54 
ContentPlaceHolder, 971, 1024 
ContextMenuStrip, 159, 480 
contexto de objetos, 661, 662 
contextos de corta duración, 675 
contract, 882 
contrato, 875 
contrato de datos, 880 
contrato de servicio, 876 
Control, 80, 81, 183 
control Button, 732 
control Calendar, 733 
control ChangePassword, 951 
control CheckBox, 730 
control CheckBoxList, 730 
control CreateUserWizard, 947 
control DataGridView, 567, 573 
control DetailsView, 1026 
control DropDownList, 732 
control GridView, 953, 1025 
control HyperLink, 733 
control Label, 730 
control LinkButton, 732 
control ListBox, 731 
control Literal, 976 
control Login, 938 
control LoginName, 951 
control LoginStatus, 939 
control LoginView, 939 
control Panel, 733 
control PasswordRecovery, 950 
control RadioButton, 731 
control RadioButtonList, 731 
control RichTextBox, 352 
control ScriptManagerProxy, 1028 
control SqlDataSource, 1024 

control Substitution, 814 
control Table, 733 
control TextBox, 730 
control web para acceso a datos, 820 
Control, atributo proveedor de valor, 848 
control, borrar, 27 
control, mover, 27 
Control.DataBind, 752 
controlador de eventos, 30, 59 
controlador para un evento, 61 
controladores de espera, 412 
controladores de eventos, asignar, 61 
ControlBox, 177 
controles, 45, 1077 
controles con enlaces a datos, 734 
controles de rango definido, 203 
controles de servidor HTML, 727 
controles de servidor web, 727 
controles de usuario, 728 
controles de usuario web, 974 
controles de validación, 727, 734, 792, 793 
controles HTML, 728 
controles para inicio de sesión, 938 
controles Strip, 323 
controles web, 729 
controles, construir, 373 
controles, enlazar o vincular con BD, 577 
Controls, 55 
ControlUpdateMode, propiedad, 431 
conversión de datos, 114 
conversiones en enlaces, 435 
Convert, 88, 192 
ConvertEventArgs, 437 
ConvertEventHandler, 436 
convertir un Date en un String y viceversa, 385 
convertir un entero en base 10, 8 o 16, en una 
cadena de caracteres, 193 
convertir una cadena de caracteres a un entero 
en base 10, 8 o 16, 192 
cookies, 804 
coordenadas, 313 
coordenadas universales, 332 
coordenadas, tipos, 317 
coordinador de transacciones distribuidas, 614 
Copy, 144 
correo electrónico, 1065 
cortar, copiar y pegar, 359 
Count, 442, 581, 627 
crear un adaptador, 561 
crear un enlace, 433, 443 

ÍNDICE

crear una aplicación, 16 
crear una aplicación MDI, 344 
crear una base de datos, 488, 493, 495 
crear una caja de diálogo, 177 
crear una conexión, 565 
crear una imagen a partir de un fichero, 260 
crear una tabla, 488 
CREATE DATABASE, 488 
CREATE TABLE, 488 
CreateDatabaseIfNotExists, 708 
CreateGraphics, 298 
CreateUser, 953 
CreateUserWizard, control, 947 
credentials, 935 
criptografía asimétrica, 959 
criptografía simétrica, 959 
CRL, 968 
CRUD, 704 
CSDL, 644 
CSS, 973, 1001, 1023, 1084 
CSS, atributos, 1084 
CSS, class, 1086 
CSS, div, 1088 
CSS, id, 1087 
CSS, link, 1085 
CSS, pseudoclases, 1087 
CSS, span, 1088 
CSS, style, 1084 
cuadro combinado, 198 
cultura, 1094 
CultureInfo, 1094 
CurrencyManager, 441, 453 
Current, 442, 584 
CurrentCell, 253 
CurrentCulture, 1095 
CurrentItem, 465, 472 
CurrentUICulture, 1095 
CurrentValues, 698 
Cursor, 329 
cursor del ratón, cambiar, 329 
Cursors, 329 
curvas cardinales y de Bézier, 307 
Cut, 144 


Data Mapper, 649 
Data Transfer Object, 532 
DataAdapter, 500, 569 
DataAdapter, métodos, 556 

1111

Database, 705 
Database First, 652, 700 
DataBind, 752, 753 
DataBinder, 755 
DataBindings, 432, 577 
DataColumn, 499, 575 
DataColumnCollection, 499 
DataContract, 880 
DataError, 477 
DataGridView, 81, 242, 456, 460, 533, 544, 567, 
573 
DataGridView, arquitectura, 243 
DataGridView, construir, 244 
DataGridView, control de errores, 476 
DataGridView, iniciar, 246 
DataGridView, n.º de filas y columnas, 254 
DataGridView, origen de datos, 249 
DataGridView, tamaño de las celdas, 252 
DataGridView, validar, 555 
DataGridView, valor de la celda, 253 
DataGridViewColumn, 243 
DataGridViewRow, 243 
DataMember, 463, 567, 751, 880 
DataReader, 500, 504 
DataRelationCollection, 499 
DataRow, 499 
DataRowCollection, 499, 583 
DataRowView, 431, 584 
DataSet, 431, 555, 575 
DataSet, métodos, 556 
DataSource, 442, 445, 460, 521, 558, 567, 751 
DataSource de DataGridView, 250 
DataSourceID, 751 
DataSourceObject, 751 
DataSourceUpdateMode, propiedad, 431 
DataTable, 431, 499, 575 
DataTableCollection, 499 
DataTextField, 751 
DataTextFormatString, 751 
DataValueField, 752 
DataView, 431, 471 
DataViewManager, 431, 575 
Date, 381, 385 
DateTime, 381 
DateTimeFormatInfo, 385 
DateTimePicker, 212 
DbCommand, 526 
DbCommandBuilder, 529 
DBConcurrencyException, 564 
DbConnection, 526 

1112

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

DbContext, 650, 659, 700 
DbDataAdapter, 526 
DbEntityEntry, 678, 683, 697, 764, 853 
DbProviderFactories, 526 
DbProviderFactory, 501, 526 
DbQuery, 650 
DbSet, 650, 659 
DbSet (Of TEntity), 650 
DbSet(Of ), 663 
DbUpdateConcurrencyException, 689 
DCOM, 13 
Deactivate, 63 
Debug, 129 
debugger, 1058 
defaultRedirect, 841 
delegado, 59 
delegado Func, 625 
delegados, 399, 623 
Delete, 584, 823 
DELETE, 491 
DeleteCommand, 505 
Deleted, 499 
DeleteMethod, 762 
depuración, 129 
depurar, 1049 
depurar una aplicación, 33 
descripción abreviada, 56, 57 
Description, 379 
deshacer, 144, 154, 352, 360 
deslizador, 207 
Detach, 896 
DetailsView, 836, 851, 869, 1026 
DHTML, 1002 
diálogo Acerca de, 181 
diálogo modal, cerrar, 180 
diálogo no modal, 233 
diálogo no modal, cerrar, 235, 236 
diálogo, ¿está visible?, 237 
diálogo, ocultar, 236 
DialogResult, propiedad de un botón, 179 
DialogResult, propiedad de un formulario, 179 
DialogResult, valor retornado..., 172 
dibujar formas, 341 
dirección, 875 
dirección de Internet, 1064 
dirección IP, 1064 
directorio virtual, 741 
dirigirse a otra URL, 938 
diseño de tipo maestro‐detalle, 461, 587 
DisplayMember, 445, 521, 558 

Dispose, 50, 180, 183, 511 
dispositivos 
matriciales y vectoriales, 294 
DNS, 1063 
doble búfer, 339 
Dock, 140, 223 
documento XML, 1009 
DoEvents, 414 
DOM, 1002 
dominio, 1063 
DoubleBuffered, 339 
DoWork, 404 
DrawArc, 306 
DrawBezier, 307 
DrawCurve, 307 
DrawEllipse, 305 
DrawLine, 304 
DrawPie, 306 
DrawPolygon, 306 
DrawRectangle, 304 
DROP TABLE, 491 
DropCreateDatabase..., 708 
DropDown, 161 
DropDownItems, 162 
DropDownList, 751 
DropDownOpening, evento, 152 
DropDownStyle, 199 
DTC, 614 


editar un recurso, 69, 130 
editor de menús, 124 
editor de texto MDI, 348 
editor de textos, 138 
ejecución asíncrona de servicios web, 890 
ejecutar, 22 
Elapsed, 226 
Elapsed, evento, 225 
elemento actual, 465, 472 
elemento de un menú, marcar, 154 
eliminar filas, 685 
eliminar un recurso, 131 
e‐mail, 1065 
Email, 957 
EnableAutoDragDrop, 366 
Enabled, 153 
EnablePageMethods, 1039 
EnablePartialRendering, 1021 
EndEdit, 548 

ÍNDICE

EndInvoke, 400 
endpoint, 882 
EndUpdate, 157, 194 
enfocar un componente, 89 
enlace a colecciones, 442 
enlace a datos, 753 
enlace con otros controles, 435 
enlace de datos, 423, 574 
enlace de datos .NET, 430 
enlaces, 875, 883, 1073 
Enter, 90 
entidad, 656 
Entity Client, 645 
Entity Framework, 643 
Entity SQL, 645 
EntityCollection, 664 
EntityDataSource, 829 
EntityDataSourceView, 843 
EntityKey, 695 
EntitySet, 695 
entorno de desarrollo integrado, 1045 
entorno de ejecución, 9 
entrada de datos, 1077 
Entries, 693 
Entry, 678, 697, 764, 853 
Enum, 111 
enumeración ContentAlignment, 54 
enumeración Keys, 130 
error, notificar, 97 
errores en una página ASP.NET, controlar, 841, 
855 
errores, control en DataGridView, 476 
ErrorProvider, 97 
ErrorText, 479 
escribir datos en una tabla, 490 
espacios de nombres, 32 
especificación de lenguaje común, 6 
eSQL, 645 
esquinas redondeadas, 979 
estado de aplicación, 810 
estado de sesión, 810 
estado de una página, 803 
estado de vista, 807 
estado del modelo, 767 
estilo del texto, 364 
estructura de una aplicación gráfica, 48 
etiqueta, 23, 54, 82 
etiquetas HTML, 1069 
Eval, 755 
EventHandler, 59, 403 

evento, 46 
evento ‐ método, 61 
evento ApplicationExit, 72 
evento CellBeginEdit, 547 
evento CellFormatting, 247 
evento Click, 87 
evento Enter, 90 
evento FormClosing, 365, 569 
evento Idle, 72 
evento KeyPress, 87 
evento Load, 89, 568 
evento MouseClick, 90 
evento Paint, 294 
evento PreInit, 982 
evento PrintPage, 358 
evento PropertyChanged, 427 
evento Selecting, 838 
evento SelectionChange, 363 
evento Shown, 89 
evento Shutdown, 73 
evento Startup, 73 
evento StartupNextInstance, 73 
evento TextChanged, 87, 426 
evento ThreadException, 72 
evento ThreadExit, 72 
evento UnhandledException, 73 
evento UserDeletingRow, 546 
evento Validated, 98 
evento Validating, 96 
evento, suscribir, 30 
eventos, 30, 58 
eventos del ratón, 334 
eventos del teclado, 86 
eventos KeyDown y KeyUp, 94 
eventos KeyDown y KeyUp y KeyPress, 94 
eventos más comunes, 59 
eventos, lista, 30 
eventos, responder, 86 
EVENTVALIDATION, 809 
EventWaitHandle, 410, 413 
ExecuteNonQuery, 503 
ExecuteReader, 503 
EXIF, 321 
Exit, 51 
explorador de bases de datos, 495 
expresión de consulta, 628 
expresión de consulta, compilación, 635 
expresiones de consulta, 632 
expresiones de enlace de datos, 753 
expresiones lambda, 623 

1113

1114

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

expresiones regulares, 99, 438 
Expression, 629, 632 
Extension, 622, 636 
extremo, 875 


factoría, 526 
fecha y hora, 25 
fecha y hora, formato, 381 
fechas, 211 
fichero de configuración, 527, 528, 827, 927 
fichero de recursos, 132, 1096 
fila añadir, 583 
fila nueva, 583 
filas, 487 
FileDialog, 217 
FileName, 219 
FileUpload, 897 
Fill, 506, 568 
Filter, 219 
FilterIndex, 219 
filtrado, 863 
filtro de nombres de fichero, 219 
finalizar la ejecución, 22 
Finally, 509 
Find, 255, 352, 584 
FindString, 157, 194 
firma digital, 960 
FixedDialog, 177 
FlatStyle, 185, 189 
flow layout, 782 
FlowLayoutPanel, 213 
Fluent API, 712 
foco, 89, 229, 583 
Focus, 89, 193, 583 
FolderBrowserDialog, 217 
font, 1069 
Font, 54, 109, 303 
FontDialog, 217, 222 
For Each, 231 
ForeColor, 109 
form, 798, 1076 
Form, 48, 81 
Format, 88 
Format de String, 381 
Format, evento, 432, 435 
FormatException, 88 
formatos de fechas y horas, 381 
FormBorderStyle, 66, 177 

FormClosed, 64 
FormClosing, 64, 365, 569 
FormClosing, evento, 180 
FormsAuthentication, 938 
formulario Acerca De, 329 
formulario activo, 63, 346 
formulario cargar, 568 
formulario cerrar, 569 
formulario hijo, 350 
formulario MDI, 348, 603 
formulario modal, 63 
formulario no modal, 63 
formulario propietario, 182 
formulario web, diseño, 735 
formulario, BackgroundImage, 324 
formulario, cerrar, 365 
formulario, posición inicial, 63 
formularios, 45, 1076 
formularios hijo, 346 
formularios hijo abiertos, 345, 362 
formularios web, 773, 798 
formularios, colección, 63 
formularios, comunicación entre, 234 
FormView, 765, 858 
From, 626, 635 
FromArgb, 109 
FromFile, 324 
FromImage, 312 
ftp, 1064, 1066 
fuente, establecer, 109 
FullPath, 255 
Func, 625 
funciones, representar, 330 
fusionar barras de herramientas, 371 


GDI+, 293 
GDI+, servicios, 295 
generador de código nativo, 12 
generar código JavaScript, 1014 
gestión de datos, 723 
gestor de recursos, 1099 
get, 798 
GetAllUsers, 956 
GetCurrent, 925 
GetCustomAttributes, 70 
GetDatabaseValues, 698 
getElementsByTagName, 1009 
GetExecutingAssembly, 70 

ÍNDICE

GetObject, 68, 132 
getSelectedColumn, 253 
GetString, 68, 132, 1101 
GetType, 263, 544 
GetView, 843 
GIF, 321 
Global.asax, 796 
globalización, 1093 
Gopher, 1064 
GotFocus, 229 
gráficos, 293 
gráficos en un documento HTML, 1074 
gráficos vectoriales, 295 
Graphics, 298, 341 
GraphicsPath, 304, 308 
grid layout, 782 
GridView, 759, 864, 1025 
GridView, AllowSorting, 863 
GridView, SelectedValue, 866 
Group, 637 
Group … By, 627 
GroupBox, 81, 188, 191 
grupo de aplicaciones, 745, 922 
grupos de noticias, 1066 
guardar documento, 355 
guardar una aplicación, 33 
guardar una imagen, 325 


habilitar o inhabilitar los elementos de un menú, 
152 
Handled, 87 
Handles, 46, 61 
HashSet, 703, 716 
HasMorePages, 359 
head, 1069 
height, 1075 
herramientas, caja, 22 
hidden, 807 
Hide, 65, 236 
hilos, 391 
hilos accediendo a controles de los formularios, 
399 
hilos secundarios, detener de forma controlada, 
414 
hilos, cancelar, 407 
hilos, estados, 398 
hilos, mecanismos de sincronización, 408 
hipertexto, 1073 

hn, 1070 
hojas de estilo, 973, 1023, 1084 
hr, 1070 
href, 1073 
HScrollBar, 81, 204 
html, 8, 1068, 1069 
HTML, controles, 727, 728 
HtmlInputHidden, 807 
HTTP, 8, 803, 1064 
HTTP 403.13, 968 
HTTP get, 799 
HTTP post, 800 
HttpClientCertificate, 963 
HttpContext, 802, 925 
HttpCookie, 804 
http‐equiv, 917 
HTTPS, 962, 966 
HttpServerUtility, 802 
HyperLink, 840, 854 


IBindingList, 431, 433, 440, 447, 469 
IBindingListView, 470 
Icon, 29, 65 
icono de la aplicación, 29 
IDatabaseInitializer, 708 
Identity, 707, 897, 924 
IDictionary, 844 
idioma, 1094 
IDisposable, 511 
Idle, 72 
IEditableObject, 548 
IEnumerable, 440, 627, 641 
iframe, 1075 
IgnoreCase, 1101 
IIS, 742, 919 
IIS 7.0, certificados, 963 
IIS, instalar, 1092 
IList, 431, 440 
Image, 322 
Image, propiedad, 133 
ImageIndex, 257, 258 
ImageList, 257 
imagen, 325, 1079 
imagen en un botón, 130 
imagen, cargar, 324 
imágen, FromFile, 260 
imagen, guardar, 325 
imágenes, 296 

1115

1116

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

imágenes en un documento HTML, 1074 
imágenes, lista de, 257 
Images, 257 
ImageStream, 258 
ImageTransparentColor, 133 
IMAP, 1064 
img, 1074 
imprimir documento, 357 
incoherencia de accesibilidad, 231 
Increment, 209 
Inherits, 781 
iniciadores de colecciones, 622 
iniciadores de objetos, 621 
iniciar una lista desplegable, 281 
inicio de sesión, 936 
Init, 785 
InitialDirectory, 219 
Initialize, 710 
innerHTML, 1010 
INotifyPropertyChanged, 427, 448 
input, 1077 
InputBox, 174 
Insert, 197, 823, 843 
INSERT, 490 
insertar filas, 682 
insertar filas, EntityDataSource, 841 
insertar filas, modelo de enlace, 855 
InsertCommand, 505 
Inserting, 845 
InsertItemTemplate, 859 
InsertMethod, 766 
interceptar la tecla pulsada, 91 
Interface, 371 
interfaces gráficas, 7, 38 
interfaz, 45 
interfaz de múltiples documentos, 343 
interfaz fluida, 712 
interfaz IEditableObject, 548 
Interlocked, 410 
internacionalización, 1093 
Internet, 1061 
Internet Explorer, 1067 
Into, 639 
intranet, 1062 
introducir datos, 475 
Invalidate, 295 
InvariantCulture, 1096 
Invoke, 400, 402 
InvokeRequired, 401, 402 
inyección de código SQL, 513 

IPrincipal, 924 
IQueryable, 627, 641, 680 
IRC, 915 
IsAlive, 398 
ISAPI, 1091 
IsBackground, 398, 419 
IsCallback, 1016 
IsClientScriptBlockRegistered, 1017 
IsDispose, 236 
IsDisposed, 183 
IsInAsyncPostBack, 1021 
IsMatch, 102, 438 
IsMDIContainer, 344 
IsOnline, 957 
IsPostBack, 759, 785 
IsStartupScriptRegistered, 1017 
IsValid, 785 
it, 648, 835 
Italic, 364 
Item, 231, 756 
ItemClicked, 481 
Items, propiedad, 156, 194 
ItemType, 756 


JavaScript, 1001 
JavaScript, depurar código, 1058 
JavaScript, eventos, 1015 
JavaScript, fichero .js, 1015 
JavaScript, generar código, 1014 
JIT, 11 
Join, 398, 627, 638 
JPEG, 321 
jQuery, 795, 943 
JSON, 1007 


Key, 231 
KeyChar, 87, 92 
KeyDown, 86, 94 
KeyPress, 86, 92, 187 
KeyPressEventArgs, 87 
Keys, 94, 130 
KeyUp, 86, 94 
KeyValuePair, 231 

ÍNDICE


label, 1081 
Label, 53, 81, 82 
LabelEdit, 255, 268 
Language, 782, 1096 
LargeChange, 204 
LastActivityDate, 957 
LayoutMdi, 347, 362 
LayoutMode, 29 
Lazy Loading, 649 
lector de datos, 504 
Left, 65 
Let, 640 
li, 1072 
Like, 584 
líneas de ayuda, 29 
LINQ, 619 
LINQ to Entities, 644 
Linux, 1103 
List, 442 
lista, 24, 193 
lista de formularios abiertos, 362 
lista de los eventos, 30 
lista de tareas, 133 
lista desplegable, 24, 198, 1080 
lista desplegable, añadir elemento, 202 
lista desplegable, borrar elemento, 202 
lista desplegable, diseñar, 200 
lista desplegable, estilo, 199 
lista desplegable, iniciar, 201 
lista, acceder a sus elementos, 196 
lista, borrar elemento, 198 
lista, colección de elementos, 197 
lista, columnas, 193 
lista, diseño, 194 
lista, elemento seleccionado, 194 
lista, iniciar, 196 
lista, ordenar, 194 
lista, selección múltiple, 196 
listas desplegables en menús, 155 
listas HTML, 1072 
ListBox, 54, 81, 193, 445 
ListBox, vincular con DataSet, 521, 558 
ListChanged, 552 
ListControl, 81 
ListView, 269, 859 
ListView, ejemplo, 273 
ListViewItem, 273 
Literal, 976 

1117

llamada asíncrona, 400 
llamada síncrona, 400 
Load, 89, 568, 751, 785 
LoadFile, 352 
LocalDB, 1054 
localhost, 800 
Localizable, 1096 
localización, 1093 
Location, 55, 126, 222 
LocationChanged, 65, 223 
lock, 410 
lógica de negocio, 723 
Login, control, 938 
LoginName, 978, 985 
LoginName, control, 951 
LoginStatus, 978, 985 
LoginStatus, control, 939 
LoginView, 977 
LoginView, control, 939 
logo, 367 


maestro‐detalle, 461, 587 
maestro‐detalle, aplicación web, 868 
mail, 1065 
Main, 49, 51 
MainMenuStrip, 126, 344 
manifiesto, 11 
ManualResetEvent, 410 
mapa de bits, 320 
MapPath, 802 
máquina virtual, 11 
marcador de posición de contenido, 971, 977, 
987 
marcas de tiempo, 896 
marco, 24 
marco con título, 281 
marcos en páginas HTML, 1075 
máscaras, 980 
MaskedTextBox, 81, 104 
MasterPage, 1023 
MasterPageFile, 971 
Match, 102 
Matches, 103 
Matrix, 315 
Max, 627 
MaxDropDownItems, 199 
maximizar, 44 
Maximum, 203 

1118

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

MDI, 343, 366 
MdiChildren, 346 
MdiLayout, 347 
MdiWindowListItem, 345 
MemberExpression, 632 
Membership, 951, 956 
MembershipUser, 956 
mensaje, mostrar, 129 
mensajes, 13 
menú, 123 
menú contextual, 159, 480 
Menú de control, 43 
menú dinámico, 161 
menú Ventana, 345, 347, 362 
menú, añadir, 126 
menú, controlador de eventos, 128, 147 
menú, elementos, 127 
menú, señalar elemento, 153 
menú, separador, 128 
menús, 121 
menús en páginas web, 974, 996 
menús, combinar, 345 
menús, diseño, 124 
menús, líneas de separación, 125 
MenuStrip, 126, 323 
Merge, 351 
MergeAction, 345, 351 
MergeIndex, 345, 351 
MessageBox, 170 
MessageBox.Show, 425 
meta, 917 
Metafile, 322 
metarchivo, 296 
method, 798, 1077 
MethodCallExpression, 632 
MethodInvoker, 403 
método ‐ evento, 61 
método Add, 55, 583 
método conducido por un evento, 86 
método DataBind, 753 
método Delete, 584 
método Dispose, 50 
método Exit, 51 
método Fill, 568 
método Find, 584 
método Focus, 583 
método Insert, 843 
método NewRow, 583 
método PerformClick, 583 
método Print, 358 

método Select, 89, 584 
método SetToolTip, 57 
método Update, 569 
métodos de página, 1038 
Métodos del generador de consultas, 645 
métodos extensores, 622 
Microsoft .NET, 4 
Microsoft Access, 502 
Microsoft.ACE.OLEDB, 503 
Microsoft.Jet.OLEDB, 503 
MiddleCenter, 54 
miembro protegido, 50 
Min, 627 
minimizar, 44 
Minimum, 203 
modal o no modal, 170 
Model First, 653, 700 
ModelMethodContext, 862 
modelo de datos, 454, 457 
modelo de enlace de ASP.NET, 757, 847 
modelo de entidades, 644 
ModelState, 767 
Model‐View‐Controller, 1059 
Model‐View‐ViewModel (MVVM), 1059 
módem, 1065 
modificadores de tamaño, 27 
modificar datos, 675 
modificar datos en una tabla, 490 
modificar una base de datos, 582 
Modified, 354, 365, 499 
ModifierKeys, 94 
Modifiers, 369 
Monitor, 409, 412 
Mono, 1103 
MonthCalendar, 212 
mosaico, 362 
mostrar un mensaje, 129 
MouseClick, 90 
MouseDown, 334 
MouseMove, 334 
MouseUp, 334 
mover el control, 27 
MsgBox, 129 
MSIL, 9 
MSL, 644 
MultiLine, 139 
multiple, 1081 
Mutex, 409 
My, 327 
My.Computer, 327 

ÍNDICE

My.Computer.Audio, 339 
My.Computer.Clipboard, 142 


name, 1073, 1077 
Name, 50, 126, 398 
navegar por los elementos de una lista, 466 
nemónico, 85, 129 
NetworkService, 746, 771 
NewRow, 583 
news, 1066 
ngen.exe, 12 
N‐Layer architecture, 895 
Node, 263 
Nodes, 255 
nodo seleccionado, 265 
nodo, añadir, 265 
nodo, borrar, 268 
nodos, borrar todos, 268 
NT AUTHORITY\Servicio de Red, 790 
N‐Tier architecture, 895 
nuevo documento, 353 
NuGet, 701 
Nullable(Of Integer), 848 


Object, 80 
ObjectCollection, 197 
ObjectContext, 653 
ObjectDataSource, 904, 905 
ObjectQuery, 645 
ObjectStateEntry, 676, 695 
ObjectStateManager, 676, 695 
objeto de negocio, 905 
objeto Response, 999 
objetos como orígenes de datos, 454 
objetos de negocio, 535 
objetos de sincronización, 409 
OdbcConnection, 501 
OdbcDataAdapter, 505 
ol, 1072 
OleDbConnection, 501 
OleDbDataAdapter, 505 
OleDbDataReader, 504 
onchange, evento, 1008 
onreadystatechange, 1005 
OpenFile, 219, 220 
OpenFileDialog, 217, 220 

OpenForms, 63 
operadores de consulta, 626 
OperationContract, 876 
optgroup, 1081 
OptimisticConcurrencyException, 689 
option, 1080 
Option Explicit, 36 
Option Strict, 36 
OracleConnection, 501 
OracleDataAdapter, 505 
orden, 505 
orden de tabulación, 1080 
orden parametrizada, 516 
orden SQL, escribir una nueva, 610 
orden Tab, 55, 90, 281 
ordenación, 863 
Order By, 627, 635 
organizar iconos, 362 
Orientation, 207 
origen de datos, 440, 457 
orígenes de datos ADO.NET, 440, 575 
orígenes de datos, ventana, 457 
OriginalValues, 698 
ORM, 643, 701 
OutputCache, 813 
Overrides, 50 
OwnedForms, 183 
OwnedWindows, 65 
Owner, 65, 183, 234 


p, 1070 
Padding, 126 
padre‐hija, tablas, 587 
Page, 784, 924, 1017 
Page.DataBind, 752 
Page_Error, 841 
Page_evento, 751, 785 
PageMethods, 1038 
PageRequestManager, 1033 
PageSetupDialog, 217 
página de contenido, 969 
página de inicio de sesión, 936 
página maestra, 969 
página principal, 969 
página web, 781, 1068 
página web ASP.NET, 739 
página web dinámica, 1090 
página web, modelo de ejecución, 747 

1119

1120

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

paginación, 863 
páginas ASP, 1091 
páginas web, publicar, 741 
Paint, 294, 298, 299 
Panel, 24, 188, 323, 367 
panel de dibujo, 340 
pantalla de presentación, 76 
ParameterExpression, 632 
Parameters, 516 
parámetro oculto, 807, 1079 
parámetros en órdenes SQL, 516 
Parse, 114 
Parse, evento, 432, 435 
Partial, 86 
pasos, 239 
passport, 927 
PasswordChar, 176 
PasswordRecovery, control, 950 
Paste, 144 
patrón de diseño Factory, 526 
patrones de diseño, 649 
Pen, 300 
perfiles, 983 
PerformClick, 117, 469, 583 
PerformStep, 209 
permanente, 312 
PictureBox, 81, 323 
plantilla, 755, 760 
plantilla de formularios, 366 
Play, 339 
PNG, 321 
POCO, 701 
Point, 55, 302 
pool de conexiones, 926 
POP 2 y 3, 1064 
portapapeles, 142, 327 
posición de un componente, modificar, 222 
posición inicial del formulario, 63 
Position, 442, 581 
post, 798 
postback, 1003, 1029 
postbacks asíncronos, 1021 
PostgreSql, 502 
precompilar la aplicación ASP.NET, 797 
PreInit, 785, 982 
PreRender, 785 
presentación, 723 
PRIMARY KEY, 489 
principal, 919 
Print, 358 

PrintDialog, 217 
PrintPage, 358 
Priority, 398 
problemas de concurrencia, 556 
procedimientos almacenados, 517, 533 
producto cartesiano, 638 
Profile, 983 
ProgressBar, 81, 208 
ProgressChanged, 406 
ProgressPercentage, 406 
PropertyChanged, 427 
PropertyManager, 441 
propiedad, 656 
propiedad autoimplementada, 621 
propiedad cambió, notificar, 427 
propiedad Cancel, 96 
propiedad ClientSize, 50 
propiedad Controls, 55 
propiedad Count, 581 
propiedad Cursor, 329 
propiedad DataBindings, 577 
propiedad DataMember, 567 
propiedad DataSource, 567 
propiedad Font, 54 
propiedad Icon, 29 
propiedad Location, 55 
propiedad Modified, 354, 365 
propiedad Name, 50 
propiedad Position, 581 
propiedad ReadOnly, 108 
propiedad Size, 50, 55 
propiedad TabStop, 55 
propiedad TanIndex, 55 
propiedad Text, 50, 54 
propiedad TextAlign, 54, 108 
propiedades, 27 
propiedades de navegación, 662 
propiedades, añadir a un control, 376, 387 
propiedades, atributos, 379 
propiedades, clasificación, 379 
propiedades, control de usuario, 373, 375, 377, 
378, 379, 380, 381, 386, 387, 388 
propietario de un diálogo, 234 
Protected, 50 
protocolo, 1062 
protocolo de transferencia de ficheros, 1066 
proveedor de datos, 500 
proveedor de entidades, 645 
proveedores de LINQ, 641 
providers, 951 

ÍNDICE

proyecto, 16 
publicar páginas web, 741 
puntero, 22 
punto de entrada a la aplicación, 51 
punto de inserción, 89 
punto final, 875 


QueryString, atributo proveedor de valor, 848 


RAD, 781 
RadioButton, 54, 81, 188 
RangeValidator, 793 
raster, dispositivos, 294 
Read, 504 
ReaderWriterLock, 410 
ReadOnly, 108 
readyState, 1005 
recorte, área de, 309 
Rectangle, 302 
recursos, 130, 1096 
recursos de una aplicación, 68 
recursos embebidos, 132 
recursos vinculados, 132 
recursos, acceder, 1099, 1100 
Redirect, 803, 999 
RedirectFromLoginPage, 938 
Redo, 352 
reescritura de la URL, 806 
refactorización, 375 
referencias, 19 
referencias culturales, 1094 
reflexión, 70 
Refresh, 447, 691 
Regex, 102, 438 
región, 308 
región de recorte, 309 
región no válida, 295 
RegisterClientScriptBlock, 1017 
RegisterStartupScript, 1017 
registros, 487 
rehacer, 352, 360 
rejilla, 567 
rejilla de ayuda, 29 
Reload, 693, 698 
reloj, 223 
reloj despertador, 164, 238 

Remove, 197, 231 
RemoveAt, 197 
RemoveAt, colección, 164 
RemoveHandler, 62 
rendimiento del servidor, 812 
repintar una ventana, 295 
Replace, 103 
ReportProgress, 406 
representar funciones, 330 
Request, 802 
RequiredFieldValidator, 793 
reset, 1079 
Reset, 413 
Resize, 223 
resolución gráfica, 294 
ResourceManager, 68, 132, 1099, 1101 
Response, 802, 999 
Response.Redirect, 938 
responseText, 1005 
responseXML, 1005 
RestoreBounds, 66 
reutilización, 373 
RevertMerge, 351 
RGB, 109 
RichTextBox, 81, 151, 352 
Row, 553 
RowCount, 254 
Rows, 243 
RTF, 352 
Run, 46 
RunWorkerAsync, 404 
RunWorkerCompleted, 404, 407 
ruta del sitio web, 802 


SaveChanges, 662 
SaveFile, 352 
script callbacks, 1012 
ScriptManager, 1021 
ScriptManagerProxy, 1028 
ScriptPath, 1021 
scripts, 1021, 1091 
ScriptService, 1036 
Scroll, 206 
ScrollBar, 54, 81, 203 
ScrollBars, 139 
sección crítica, 410 
seguimiento de los cambios, 695 
seguridad, 958 

1121

1122

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

seleccionar datos de una tabla, 491 
seleccionar el contenido de una caja de texto, 90 
seleccionar el texto de una caja, 229 
seleccionar un objeto, 28 
select, 1080 
Select, 89, 91, 144, 584, 635, 823, 838 
SELECT, 491 
SelectAll, 90, 144, 229 
SelectCommand, 505 
selected, 1081 
SelectedCells, 244 
SelectedColumns, 243 
SelectedImageIndex, 257, 258 
SelectedIndex, 157, 194, 199, 752 
SelectedIndexChanged, 157, 672, 673 
SelectedItem, 157, 194, 199, 201, 752 
SelectedItems, 196 
SelectedNode, 255, 265 
SelectedRows, 243 
SelectedRtf, 359 
SelectedText, 91, 143, 359 
SelectedValue, 558, 752 
Selecting, 838 
SelectionAlignment, 364 
SelectionChange, 363 
SelectionFont, 364 
SelectionLength, 91, 143 
SelectionStart, 91, 143 
SelectMethod, 761 
Semaphore, 409 
sentencia Using, 511 
señalar un elemento de un menú, 153 
separadores, 125 
seriar/deseriar un árbol, 292 
Server, 802, 841 
ServiceContract, 876 
Services, 1021, 1036 
servicio, 873 
servicio de conexiones, 926 
Servicio de red, 746, 771 
servicio de suscripciones, 951 
servicio WCF, 875 
servicio WCF, configuración, 882 
servicio web, 8 
servicio web, acceso a BD, 990 
servicios de IIS, 742 
servicios de Internet, 1065 
Servicios de objetos, 646 
servicios web con AJAX, 1034 
servicios web y LINQ, 894 

servicios web, ejecución asíncrona, 890 
servidor de nombres, 1064 
servidor SMTP de IIS, 948 
servidor web, 1092 
servlets, 1092 
Session, 802 
Set, 413, 686 
SetCacheability, 815 
SetClip, 309 
SetError, 97 
SetInitializer, 710 
setLocationRelativeTo, 283 
setTimeout, 1011 
SetToolTip, 57 
ShortcutKeys, 130 
Show, 65, 170, 177, 183, 234 
ShowColor, 222 
ShowDialog, 63, 177, 179, 183, 218 
ShowHelp, 221 
ShowInTaskbar, 64, 65 
Shown, 63, 89 
ShowNodeToolTips, 269 
ShowPlusMinus, 269 
ShowReadOnly, 219 
ShowRootLines, 269 
Shutdown, 73 
simultaneidad, 689, 895 
simultaneidad optimista, 563 
sincronización, 917 
sistema de nombres de dominio, 1063 
sitio web, 741 
sitio web, reglas de acceso, 954 
sitios web, administración, 941 
size, 1069 
Size, 50, 55, 222, 303 
SizeChanged, 223 
skins, 980 
Sleep, 398 
SmallChange, 204 
SMTP, 948, 1065 
SOAP, 871 
SOAP, mensaje, 874 
SolidBrush, 301 
solución, 16 
sonido en una aplicación, 339 
Sort, 194, 200 
SortedList, 229, 230 
SplashScreen, 76 
SplitContainer, 273 
SQL, 488 

ÍNDICE

SQL Server, 502, 509, 790 
SQL Server 2012 Express, 1051 
SQL Server Management Studio Express, 1054 
SqlCacheDependency, 817 
SQLCMD, 1052 
SqlCommand, 503 
SqlCommandBuilder, 563 
SqlConnection, 501 
SqlDataAdapter, 505 
SqlDataReader, 504 
SqlDataSource, 820, 1024 
src, 1074, 1076 
SSDL, 644 
SSL, 930, 961, 967 
Start, 396, 398 
StartPosition, 63 
Startup, 73 
StartupNextInstance, 73 
StartupPosition, 66 
State, 698 
status, 1005 
StatusBar, 81 
StatusStrip, 137 
statusText, 1005 
Step, 209 
StoreWins, 693 
Strikethru, 364 
subdominio, 1063 
submenú‐menú contextual, 161 
submenús, 127 
submit, 1079 
Substitution, 814 
Sum, 627 
suplantación de identidad, 932 
SupportsFiltering, 469 
SupportsSorting, 469 
suscribir evento, 30 
SvcUtil.exe, 887 
SyncLock, 410, 419 
System.ComponentModel, 81 
System.Data.Linq, 619 
System.Drawing, 50, 54, 82, 296 
System.Linq, 619 
System.Linq.Expressions, 631 
System.Runtime.CompilerServices, 622, 636 
System.Threading, 392 
system.web, 927 
System.Web, 802 
System.Windows.Forms, 49, 80 
System.Windows.Forms.Design, 81 

1123


Tab, 55 
TabControl, 210 
tabindex, 1080 
TabIndex, 55, 89, 126 
tabla, 24, 241, 487, 1083 
tabla con cabecera de filas, 281 
tabla, construir, 244 
tabla, iniciar, 246 
table, 1083 
table dinámico, 1005 
TableAdapterManager, 574 
TableLayoutPanel, 213 
tablero de dibujo, 340 
TabStop, 55 
Tag, 484 
Take While, 627 
tamaño de los controles, 27 
tamaño de un componente, modificar, 222 
TCP/IP, 1062 
td, 1083 
tecla de acceso, 56, 85 
tecla pulsada, interceptar, 91 
teclas, 94 
teclas Alt, Control o Shift (Mayús), 94 
telnet, 1065 
temas, 980 
temporizador, 25, 223, 1011 
Text, 50, 54, 88, 199 
TextAlign, 54, 108 
textarea, 1080 
TextBox, 53, 81, 82, 141 
TextBoxBase, 81, 143 
TextChanged, 87, 191, 426 
texto seleccionado, 152 
th, 1083 
theme, 980 
Thread, 395 
ThreadException, 72 
ThreadExit, 72 
ThreadStart, 395 
ThreadState, 398 
ThreeState, 185 
Tick, evento, 225 
TickFrequency, 207 
ticks, 239 
TickStyle, 207 
TIFF, 321 
Timer, 224, 410, 1034 

1124

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

TimeSpam, 226 
tip, 57 
tipo anónimo, 620 
tipo de un objeto, 263 
tipo enumerado, 111 
tipo implícito, 620 
tipografía, 296 
tipos de enlace, 432 
tipos SQL, 489 
title, 1069 
ToDouble, 88 
ToInt32, 192 
ToList, 663 
ToolBar, 81 
ToolStrip, 121, 134 
ToolStripButton, 135 
ToolStripComboBox, 155 
ToolStripItem, 121 
ToolStripItemCollection, 127 
ToolStripManager, 351 
ToolStripMenuItem, 126, 480 
ToolStripSeparator, 128 
ToolTip, 57 
Top, 65 
Topmost, 66 
ToString, 193, 230, 262 
ToUpper, 193 
tr, 1083 
TrackBar, 81, 207 
transacción, 518, 613 
transacciones explícitas, 523 
TransactionScope, 519, 613 
Transform, 316 
transformación, 314, 331 
transformación global, 316 
transformación local, 316 
transformaciones de color, 318 
trazado, 308 
TreeNode, 255 
TreeView, 254 
trigger, 1029 
Triggers, 1030 
TryParse, 114 
type, 1077 
Type, 263, 460, 544 
typeof, 460 


Unchanged, 499 

Underline, 364 
Undo, 144, 154, 352, 360 
UnhandledException, 73 
unidad de medida, 299 
UNIQUE, 489 
Unload, 785 
Update, 507, 569, 613, 823 
UPDATE, 490 
UpdateCommand, 505 
UpdateMethod, 762 
UpdateMode, 1031 
UpdatePanel, 1028 
UpdateProgress, 1032 
URL, 725, 1072 
URL, dirigirse a otra, 938 
USENET, 1065, 1066 
User, 924 
UserControl, 375 
UserDeletingRow, 546 
UserName, 957 
Using, 511, 613 
usuario ASPNET, 926 


validación, 767 
validación de datos, DataGridView, 478 
validación de los datos, 606 
validación discreta, 794 
validación personalizada, 104 
validación, controles, 727 
validar datos, 438 
validar un campo de texto, 93 
Validate, 606 
Validated, 96 
Validating, 96 
ValidationAttribute, 711 
ValidationSummary, 793 
value, 1079 
Value, 203, 209, 231, 237 
Value Object, 532, 649 
value provider attributes, 848 
ValueChanged, 206 
ValueMember, 521, 558 
var, 620 
varbinary, 897 
variable fuertemente tipada, 756 
variable, declaración implícita, 620 
VaryByParam, 813 
ventana, 43, 45 

ÍNDICE

ventana de aplicación, 344 
ventana de documento, 344 
ventana, centrar, 283 
Ventana, menú, 347, 362 
ViewState, 784, 807, 808 
ViewState, deshabilitar, 818 
ViewState, mecanismo, 818 
vista de colección, 471 
vista del control, 844 
vista, buscar sus elementos, 474 
vista, filtrar sus elementos, 474 
vista, ordenar sus elementos, 473 
Visual Studio .NET, 13, 15 
VScrollBar, 81, 204 


WaitAll, 413 
WaitAny, 413 
WaitHandle, 410, 412 
WaitOne, 413 
WCF, 873 
web, 1066 
web, controles, 727 
Web.config, 927 
WebForm_DoCallback, 1013 

 

webMethod, 1039 
WebResource.axd, 1014 
Where, 635 
WhereParameters, 838 
width, 1075 
Windows Forms, 7, 38, 79 
WindowsFormsApplicationBase, 76 
WindowsIdentity, 925 
WindowState, 66, 344 
WithEvents, 54 
WordWrap, 139 
WorkerReportsProgress, 406 
WorkerSupportsCancellation, 407 
world wide web, 1066 
WPF, 7, 38, 79 
WriteLine, 129 
WSDL, 872 
WWW, 1065, 1066 


XCOPY, 1052 
XHTML, 1001, 1090 
XML, 7, 1009, 1089 
XMLHTTP, 1004 
XMLHttpRequest, 1004 

1125

Del mismo autor
● Curso de programación con
PASCAL
● Curso de programación
GW BASIC/BASICA
● Manual para TURBO BASIC
Guía del programador
● Manual para Quick C 2
Guía del programador
● Manual para Quick BASIC 4.5
Guía del programador
● Curso de programación
Microsoft COBOL
● Enciclopedia del lenguaje
C
● Curso de programación
QBASIC y MS-DOS 5
● Curso de programación
RM/COBOL-85
● El abecé de
MS-DOS 6
● Microsoft Visual C ++ (ver. 1.5x de 16 bits)
Aplicaciones para Windows
● Microsoft Visual C ++
Aplicaciones para Win32 (2ª edición)
● Microsoft Visual C ++
Programación avanzada en Win32
● Visual Basic 6
Curso de programación (2ª edición)
● Enciclopedia de Microsoft
Visual Basic 6
● El lenguaje de programación
Java
● El lenguaje de programación
C#

ISBN: 978-84-86381-36-3
224 págs.
ISBN: 978-84-86381-87-5
320 págs.
ISBN: 978-84-86381-43-1
444 págs.
ISBN: 978-84-86381-65-3
540 págs.
ISBN: 978-84-86381-74-5
496 págs.
ISBN: 978-84-7897-001-8
480 págs.
ISBN: 978-84-7897-053-7
888 págs.
ISBN: 978-84-7897-059-9
384 págs.
ISBN: 978-84-7897-070-4
396 págs.
ISBN: 978-84-7897-114-5
224 págs.
ISBN: 978-84-7897-180-0
846 págs. + 2 disquetes
ISBN: 978-84-7897-561-7
792 págs. + disquete
ISBN: 978-84-7897-344-6
888 págs. + CD-ROM
ISBN: 978-84-7897-357-6
528 págs. + disquete
ISBN: 978-84-7897-386-6
1.072 págs. + CD-ROM
ISBN: 978-84-7897-485-6
320 págs. + CD-ROM
ISBN: 978-84-7897-500-6
320 págs. + CD-ROM

Del mismo autor
● El lenguaje de programación
Visual Basic.NET
● Java 2
Lenguaje y aplicaciones
● Programación orientada a objetos
con C ++ (4ª edición)
● C/C++
Curso de programación (3ª edición)
● Microsoft C#
Lenguaje y aplicaciones (2ª edición)
● Java 2. Interfaces gráficas y aplicaciones para
Internet (3ª edición)
● Aplicaciones .Net multiplataforma
(Proyecto Mono)
● Enciclopedia del lenguaje
C ++ (2ª edición)
● Enciclopedia de Microsoft
Visual C# (3ª edición)
● Enciclopedia de Microsoft
Visual Basic (2ª edición)
● Microsoft Visual Basic .NET
Lenguaje y aplicaciones (3ª edición)
● Java 2
Curso de programación (4ª edición)
● Microsoft C#
Curso de programación (2ª edición)
● Visual C#. Interfaces gráficas y aplicaciones
para Internet con WPF, WCF y Silverlight
● Visual Basic. Interfaces gráficas y aplicaciones
para Internet con WPF, WCF y Silverlight

ISBN: 978-84-7897-525-9
464 págs. + CD-ROM
ISBN: 978-84-7897-745-1
392 págs. + CD-ROM
ISBN: 978-84-7897-761-1
648 págs. + CD-ROM
ISBN: 978-84-7897-762-8
708 págs. + CD-ROM
ISBN: 978-84-7897-813-7
520 págs. + CD-ROM
ISBN: 978-84-7897-859-5
718 págs. + CD-ROM
ISBN: 978-84-7897-880-9
212 págs. + CD-ROM
ISBN: 978-84-7897-915-8
902 págs. + CD-ROM
ISBN: 978-84-7897-986-8
1.110 págs. + CD-ROM
ISBN: 978-84-7897-987-5
1.090 págs. + CD-ROM
ISBN: 978-84-9964-020-4
520 págs. + CD-ROM
ISBN: 978-84-9964-032-7
820 págs. + CD-ROM
ISBN: 978-84-9964-068-6
850 págs. + CD-ROM
ISBN: 978-84-9964-203-1
956 págs. + CD-ROM
ISBN: 978-84-9964-204-8
938 págs. + CD-ROM

INSTALACIÓN
Para instalar el kit de desarrollo de Visual Basic y los ejemplos de este libro descargue la plataforma de desarrollo de la dirección: http://www.microsoft.com/express/.

PLATAFORMA WINDOWS
Instalación de .NET Framework SDK
Hay que instalar .NET Framework Redistributable Package antes de instalar .NET Framework SDK. El primer
paquete incluye todo lo necesario para ejecutar aplicaciones desarrolladas con .NET Framework. El segundo paquete incorpora todo lo necesario para escribir, construir, verificar y desplegar aplicaciones desarrolladas
con.NET Framework.
Para realizar la instalación, siga las instrucciones mostradas por el asistente de instalación. Esta instalación se
realiza en la carpeta Microsoft.NET de Windows y en la carpeta Microsoft.NET de archivos de programas.

Instalación de Microsoft Visual Studio
La instalación de Visual Studio (el paquete completo o las versiones Express que necesite) no requiere la instalación previa del SDK porque está incluido en éste. Descargue de Internet el paquete Visual Studio Express 2012,
o bien, si tiene acceso a alguna versión profesional de Visual Studio 2012, e instálelo (opcionalmente puede instalar SQL Server Express).

Ejemplos del libro
Los ejemplos del libro puede instalarlos en la carpeta Projects de Visual Studio o los puede recuperar directamente desde el material adicional cuando los quiera consultar.

PLATAFORMA LINUX
Véase el apéndice D.

LICENCIA
Todo el contenido de este material adicional, excepto los ejemplos del libro, es propiedad de las firmas que los
representan (Microsoft, etc.). La inclusión en este libro se debe a su gentileza y es totalmente gratuita y con la
finalidad de apoyar el aprendizaje del software correspondiente. Para obtener más información y actualizaciones visite las direcciones indicadas en dicho software:
http://www.microsoft.com/express/
Al realizar el proceso de instalación, haga el favor de consultar el acuerdo de licencia para cada uno de los productos.

WEB DEL AUTOR: http://www.fjceballos.es
En esta Web podrá echar una ojeada a mis publicaciones más recientes y acceder a la descarga del software necesario para el estudio de esta obra así como a otros recursos.

Sign up to vote on this title
UsefulNot useful