La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Controles para el desarrollo de clientes inteligentes con Windows Forms Mentor Asociado Solid Quality Learning IberoAmericana Daniel A. Seara NDSoft.

Presentaciones similares


Presentación del tema: "Controles para el desarrollo de clientes inteligentes con Windows Forms Mentor Asociado Solid Quality Learning IberoAmericana Daniel A. Seara NDSoft."— Transcripción de la presentación:

1 Controles para el desarrollo de clientes inteligentes con Windows Forms Mentor Asociado Solid Quality Learning IberoAmericana Daniel A. Seara NDSoft

2 Agenda Los que están Mejorando la experiencia del usuario Cuando los que están no alcanzan Preguntas…

3 Los que están (ex) Windows Common Controls 2 TreeViewListViewStatusBarToolbar Windows Forms ToolTipHelpProviderMainMenuContextMenu

4 Mejorando la experiencia del usuario Entornos similares a los ya conocidos Explorer Internet Explorer Funcionalidades similares ¡Aprender mucho a usar Office!

5 Mejorando la experiencia del usuario Menús adaptativos 'Agrega al menú contextual, las opciones del Menú Ver cmnuLista.MergeMenu(mnuVer) 'Inserta un Separador cmnuLista.MenuItems.Add("-") 'Agrega las opciones del menú Editar cmnuLista.MergeMenu(mnuEditar)

6 Mejorando la experiencia del usuario Informar al usuario, mientras se realizan tareas Sub Informar(Optional ByVal texto As String = "") Estado.Panels(0).Text = texto DoEvents() End Sub

7 Mejorando la experiencia del usuario Informar al usuario, mientras se realizan tareas (Progreso) Sub PrepararProgreso(ByVal mínimo As Integer, ByVal máximo As Integer) With Progreso.Value = mínimo.Minimum = mínimo.Maximum = máximo Dim izq, ancho As Integer For Each p As StatusBarPanel In Estado.Panels If p Is PanelProgreso Then ancho =.Width Exit For End If izq += p.Width Next.Left = izq.Top = Estado.Top + 1.Width = ancho.Visible = True End With End Sub Sub Progresar() With Progreso If.Value =.Maximum Then.Visible = False Else.Value += 1 End If End With DoEvents() End Sub

8 Mejorando la experiencia del usuario Gráfica entendible Function AgregaFoto(ByVal FotoBytes() As Byte) As Integer Dim mst As New System.IO.MemoryStream(FotoBytes, _ 78, FotoBytes.Length - 78) 'Crea un Bitmap Dim Img As New System.Drawing.Bitmap(mst) 'Agrega el bitmap a la colección de imágenes imgFotos.Images.Add(System.Drawing.Bitmap.FromStream(mst)) imgFotos16.Images.Add(System.Drawing.Bitmap.FromStream(mst)) Img.Dispose() Return imgFotos.Images.Count - 1 End Function

9 Mejorando la experiencia del usuario Arrastrar y colocar (alias Drag and Drop) Del Origen ItemDrag Del Destino DragEnterDragOverDragDrop Asignar los elementos que se desee administrar a DataObject, y llamar al método DoDragDrop Ver si hay datos presentes y mostrar el efecto deseado(Copiar, mover, No) Indicar efectivamente el destino (ej. Nodo del árbol) Realizar la tarea adecuada, con los datos arrastrados

10 Mejorando la experiencia del usuario El usuario espera comportamientos Preservar información de la aplicación para la próxima llamada Posición y tamaño de la ventana Opciones de visualización Etc. El usuario se asusta con las ventanas raras Dejar algo en la retaguardia, como último control de errores

11 Cuando los que están no alcanzan ListView Control esperado por el usuario Lo ve cada día, en Internet Explorer, Outlook Problemas No es vinculable a datos Ordena por caracteres No reacciona a los cambios en los datos

12 DataListView … y vamos a tener que hablar de herencia Funcionalidad prevista La que tiene ListView (esto es herencia) Vinculable a datos Ordenable Sensible a los cambios de los datos subyacentes

13 Creando DataListView Un proyecto de Controles Una clase (o sea, sacamos el UserControl) Que hereda de System.Windows.Forms.ListView Para aprovechar la funcionalidad existente Agregamos atributos para definir su comportamiento <System.ComponentModel.ToolboxItem(True), _ System.ComponentModel.DefaultEvent("DoubleClick"), _ ToolboxBitmap(GetType(DataListView))> _

14 Creando DataListView Agregamos nuestras propiedades DataSourceDataMember Procedimientos para Cargar Vincular Define las columnas y carga los items Cada item debiera contener la fila que lo genera Cambiar ListItem (Heredando de ListItem)

15 Definiendo DataListItem Otra clase Que hereda de System.Windows.Forms.ListViewItem ExponeDataRow Key (que le falta al ListViewItem) Pero necesitamos que se exponga este tipo en lugar del propio del ListView en la propiedad Items

16 Definiendo DataListItemCollection Otra clase más Que hereda de System.Windows.Forms.ListView.ListViewItemCollection Contiene los DataListItem Para accederlos por clave, utiliza un HashTable Se deben reemplazar los miembros comunes, para que su comportamiento se adapte a nuestros requerimientos AddClearItemRemove

17 Ordenando… Se debe asignar la propiedad ListViewItemSorter Con una clase que implemente la Interfaz System.Collections.Icomparer Devolviendo el resultado de la comparación del valor de los campos, en lugar de la comparación de cadenas de caracteres -1 Menor 0 Iguales 1 Mayor

18 Preguntas


Descargar ppt "Controles para el desarrollo de clientes inteligentes con Windows Forms Mentor Asociado Solid Quality Learning IberoAmericana Daniel A. Seara NDSoft."

Presentaciones similares


Anuncios Google