70-526 Resumen 1/8: Windows Forms.
Formularios:
· Introducción a los formularios Windows Forms.
· Son el elemento básico de construcción de aplicaciones Windows y sirven de base de la interfaz de usuario. El formulario, puede actuar como contenedor de los controles, y puede contener métodos, propiedades y eventos. Pueden ser añadidos en tiempo de diseño (design-time) ó en tiempo de ejecución (runtime).
· Crear un nuevo formulario con Windows Forms.
· Como en toda clase en C# .NET, la palabra clave this hace referencia a la clase en la que estamos.
· Propiedades de un formulario.
· La enumeración FormBorderStyle representa los distintos tipos de borde que puede tener un formulario, indicado en su propiedad del mismo nombre.
· Coordenadas de formularios Windows Forms.
· Las dimensiones del formulario pueden ser definidas usando las propiedades Width (anchura) y Height (altura) ó definiendo una nueva estructura Size.
· La localización del formulario puede ser definida usando las propiedades Left (distancia del borde izquierdo hasta el margen izquierdo) y Top (distancia del borde superior hasta el margen superior) ó definiendo una nueva estructura Point en la propiedad Location.
· Puedes cambiar su apariencia y comportamiento cambiando sus propiedades, como Text, FormBorderStyle, WindowsState, Size, StartPosition, TopMost, Visible y Opacity.
· La enumeración FormStartPosition representa las distintas posiciones iniciales que puede tener un formulario, se configura en la propiedad del mismo nombre.
· Puedes configurar un formulario inicial desde las propiedades del proyecto de Visual Studio ó cambiandolo en el método Main de este (clase Program en Program.cs).
· Puedes crear formularios no-rectangulares creando una nueva instancia de la clase Region con la forma deseada y apuntando la propiedad Region de nuestro formulario a la nueva instancia.
· La propiedad TransparencyKey permite definir un color que será invisible en tiempo de ejecución, convirtiéndolas en zonas transparentes.
Controles contenedores:
· Pueden ser usados para agrupar controles en un formulario.
· GroupBox se usa normalmente para agrupar controles RadioButton.
· Panel crea distintas secciones en un formulario, es scrollable (permite barras de scroll).
· FlowLayoutPanel, derivado de Panel, también es scrollabe y además provee de una forma de distribución similar a un formulario HTML.
o Información sobre FlowLayoutPanel.
· TableLayoutPanel, otro derivado de Panel también scrollable y provee una forma de distribución pero este en forma de celdas (filas/columnas).
o Información sobre TableLayoutPanel.
· TabControl permite tener una colección de TabPage distribuidas como pestañas (tabs), las cuales funcionan de forma similar a Panel.
o Información sobre TabControl.
· SplitContainer encapsula dos controles SplitterPanel y un Splitter. El usuario podrá redimensionar los paneles dinámicamente moviendo el Splitter.
o Información sobre SplitContainer.
Configurando controles en formularios:
· Un control, es un componente que combina una interfaz gráfica con una funcionalidad prediseñada; son unidades rehusables de código se diseñaron para cubrir una tarea en particular.
· Controles de formularios Windows Forms.
· Visual Studio 2005 provee de múltiples mecanismos para gestionar la distribución de los controles en tu formulario, incluyendo:
o La ventana de Propiedades.
o La barra de herramientas Layout, que provee de una sencilla forma de realizar la mayoría de las tareas relacionadas con la distribución de controles en un formulario en tiempo de diseño.
o Snaplines, las líneas que indican la alineación y distancia en relación a otros controles, que nos permite distribuirlos de forma equidistante y alineada.
o Smart tags, que exponen las tareas de configuración más frecuentes del control.
· Las propiedades individuales de controles pueden ser modificadas en la ventana de Propiedades. Algunas propiedades complejas como colecciones proveen de asistentes gráficos para ayudar en la configuración de la propiedad.
· La propiedad Anchor determina que bordes del control mantendrán constante la distancia hasta el mismo borde de su contenedor cuando este se redimensione. En otras palabras, que bordes vamos a “anclar” a su contenedor ;)
· La propiedad Dock permite “unir” un control a uno de los bordes de su contenedor (ó a todos, Fill, ocupando toda la superficie de su contenedor).
· La ventana de “esbozo del documento” (Document Outline) provee de una sencilla forma de gestionar la localización de los controles entre tu formulario y los controles contenedores.
· Buenas prácticas para el diseño de interfaces de usuario:
o Simplicidad: La interfaz debe mostrar únicamente la funcionalidad requerida para la etapa actual de forma clara. Los controles deben estar distribuidos según las relaciones entre ellos, mostrará únicamente los valores válidos para esa etapa y siempre que sea posible mostrarán valores por defecto.
o Posición: La posición de los controles debe reflejar su importancia y frecuencia de uso.
o Consistencia: La interfaz de usuario ha de ser homogénea en todas sus etapas y formularios, de forma que conociendo una de las etapas ó formularios se pueda deducir la mayoría de funcionalidades del resto. Consistencia tanto a nivel funcional como estético.
o Estética: Siempre que sea posible, debe ser una interfaz agradable. Simplicidad y claridad son dos características a perseguir, huyendo de la sobrecarga.
Controles de comando y texto:
· El control Button es el principal control de comandos en una interfaz de usuario.
o El evento “Click” apunta al método que será ejecutado cuando se pulse sobre el botón.
o La propiedad FlatApperance controla como se muestra un control Button cuando la propiedad FlatStyle esta configurada como Flat.
o La propiedad DialogResult permite crear un botón “Cancelar” ó “Aceptar”. Podrías evaluar el resultado del formulario como si fuese un cuadro de dialogo estándar si lo muestras por medio del método ShowDialog.
· El control Label es una forma de representar texto de solo lectura en forma de etiqueta. Su uso común es “etiquetar” otros controles con su nombre y proveer de una “access key”. Las “access key” son teclas identificadas por su letra subrayada en el Label que cuando pulsamos el Alt llevan el foco a un control determinado. Para marcar una letra como “access key”, precédela del símbolo ampersand (‘&’) en la palabra (ie: Confi&gurar = Configurar). Para indicar a que control hay que llevar el foco, con el TabIndex. Marcar la propiedad UseMnemoic como True.
· El control LinkLabel permite crear una etiqueta con el estilo “link” de HTML, es decir, como si fuese un “href” convencional.
o El evento LinkClicked indica que método se ejecutará al hacer click sobre el link.
o Sus propiedades ActiveLinkColor, LinkArea, LinkBehabior, LinkColor, LinkVisited y VisitedLinkColor controlan su aspecto y comportamiento.
Controles de edición de texto:
· El control TextBox permite al usuario introducir texto.
o El texto puede ser accedido a través de la propiead Text.
o Si se configura como Multiline, el texto se puede acceder en el array Lines, donde cada línea es un elemento del array. Scrollbars indica si se muestran las barras de desplazamiento y cuales.
o Si se configura un carácter ó varios en PasswordChar, el control ocultará lo que escribimos con dichos caracteres, aunque la propiedad Text muestre el texto real.
· El control MaskedTextBox puede configurarse para representar y formatear texto.
o La propiedad Mask determina que formateo de texto realizar (importante).
Controles de listas:
· Controles de formularios para mostrar opciones.
· Los controles basados en listas son usados para organizar y presentar listas de información al usuario.
· Aunque las colecciones que representan básicamente son strings, pueden almacenar cualquier objeto, mostrando entonces su representación como cadenas de texto (.ToString).
· El control ListBox muestra una selección de ítems al usuario y le permite seleccionar uno ó más ítems de esta lista.
· El control ComboBox puede parecer similar al ListBox ó a una lista desplegable. Puedes hacer que el usuario elija un valor de la lista ó escriba uno si no esta presente.
· El control CheckedListBox muestra una lista de ítems con una caja de validación al lado de cada una, permitiendo al usuario para marcar los ítems que el desee. Aunque pueden ser marcados múltiples ítems, solo uno puedes ser seleccionado cada vez.
· El control ListView muestra vistas especializadas de listas de elementos. Los elementos pueden ser mostrados en asociación con los iconos que provee un ImageList ó con columnas adicionales de sub-items.
· El control TreeView muestra una lista de elementos en de forma jerárquica. Cada nodo contiene una serie de nodos hijos, que pueden contener a su vez más nodos hijos. Los nodos pueden ser expandidos ó colapsados.
· El control NumericUpDown permite al usuario aumentar ó disminuir un valor numérico con el ratón haciendo click en sus flechas.
· El control DomainUpDown permite al usuario “subir” ó “bajar” a lo largo de una serie de valores predefinidos con el ratón haciendo click en sus flechas.
Controles de ajuste de valores, fechas e imágenes:
· El control CheckBox permite al usuario seleccionar opciones de forma no-exclusiva. Puedes crear grupos para permitir al usuario seleccionar múltiples opciones.
· El control RadioButton permite al usuario seleccionar opciones de forma exclusiva. Puedes crear grupos donde solo una de las opciones puede ser elegida.
· El control TrackBar permite al usuario seleccionar un valor numérico de forma rápida y gráfica deslizando el indicador con el ratón ó con comandos del teclado.
· El control DateTimePicker permite al usuario configurar una hora ó una fecha. Cuando se selecciona formato Timer se pueden escribir los valores directamente en el control.
· El control MonthCalendar es un control muy configurable que permite al usuario seleccionar un rango de fechas desde una intuitiva interfaz de usuario.
· El control PictureBox permite mostrar imágenes de varios formatos en el formulario.
· El control ImageList puede organizar una colección de imágenes y ajustarlas a un tamaño y profundidad de color comun.
Control navegador web y componente NotifyIcon:
· El control WebBrowser encapsula toda la funcionalidad necesaria para acceder a Internet y cargar una gran variedad de tipos documentos. Es una versión empotrada del renderizador de iexplore.exe. Permite la navegación a través de WWW y del sistema de archivos.
· Su propiedad ObjectForScripting permite configurar un objeto que podrá ser accedido desde secuencias de comando de la página.
· El componente NotifyIcon te permite configurar un icono en la bandeja del sistema y enviar notificaciones al usuario como un proceso funcionando en segundo plano. Puedes mostrar mensajes usando los “Balloon tips” y enviarle comandos asociandole un ContextMenuStrip.
Configurando barras de herramientas:
· El control ToolStrip es un contenedor para controles ToolStripMenuItem que pueden ser usados para crear barras de herramientas en los formularios.
· Son útiles para reunir tareas ó funcionalidades comunes y/ó frecuentes.
· Tipos:
o ToolStripLabel: Etiqueta, similar a Label.
o ToolStripButton: Botón, similar a Button.
o ToolStripSeparator: Elemento visual que indica una separación.
o ToolStripComboBox: Lista desplegable, similar a ComboBox.
o ToolStripTextBox: Caja de texto, similar a TextBox.
o ToolStripProgressBar: Barra de progreso, similar a ProgressBar.
o ToolStripDropDownButton: Mezcla entre ToolStripButton y ToolStripComboBox, al hacer click a parte de ejecutarse una acción (evento Click) se despliega una lista.
o ToolStripSplitButton: Similar al anterior.
· Muchas de estos controles de barra de herramientas tienen su análogo en las aplicaciones Windows convencionales, otros como ToolStripSepartor, ToolStripDropDownButton y ToolStripSplitButton no.
· Puedes mostrar imágenes en los ToolStripItems con la propiedad Image.
· El control ToolStripContainer permite crear formularios que incluyan soporte para arrastrar barras de herramientas.
· La clase ToolStripManager es una clase estática que tiene métodos para la gestión de estas barras de herramientas. Puees usar el método ToolStripManager.Merge para mezclar los elementos de la barra de herramientas.
Creando y configurando barras de menu:
· El control MenuStrip es similar a ToolStrip pero orientando a barras de menús.
· Es un contenedor para controles ToolStripMenuItems.
· A su vez, los ToolStripMenuItems pueden tener su propios sub-items, contenidos en propiedad DropDownItems.
· Pueden tener marcas de comprobación (“checks”) y “access key”.
· También pueden mezclarse entre ellos (“merge”).
· El control ContextMenuStrip te permite crear menús contextuales. Debes asociarlo a otro control en su propiedad del mismo nombre para que se hagan visibles al usar el botón derecho.
Eventos:
· Eventos en la guía de programación de C#.
· Representan una notificación de que algo interesante ha sucedido en la aplicación. Puedes asignar métodos llamados “manejadores de eventos” a los eventos, estos se ejecutarán en respuesta al evento.
· Puedes crear manejadotes de eventos desde el diseñador de Visual Studio a través de la ventana Propiedades.
· La firma del método manejador de eventos debe coincidir con la firma del delegado que tiene el evento.
· Se pueden dirigir varios eventos al mismo manejador de eventos desde VS.
· Se pueden dirigir un mismo evento a varios manejadores usando el operador “+=” desde el código y/ó en tiempo de ejecución. También se puede usar el operador “-=” para desubscribir el evento.
· Eventos del ratón.
· Eventos del teclado.
CrossPosting
desde vtortola.NET
70-526 Resumen 1/8: Windows Forms.