Migrando ASP a ASP.NET Daniel A. Seara Director Regional MSDN NDSoft.
Controles para el desarrollo de clientes inteligentes con Windows Forms Mentor Asociado Solid...
-
Upload
maximino-crisostomo -
Category
Documents
-
view
3 -
download
0
Transcript of Controles para el desarrollo de clientes inteligentes con Windows Forms Mentor Asociado Solid...
Controles para el Controles para el desarrollo de clientes desarrollo de clientes inteligentes con Windows inteligentes con Windows FormsForms
Mentor AsociadoSolid Quality LearningIberoAmericana
Daniel A. SearaNDSoft
AgendaAgenda
Los que estánLos que están
Mejorando la experiencia del usuarioMejorando la experiencia del usuario
Cuando los que están no alcanzanCuando los que están no alcanzan
Preguntas…Preguntas…
Los que estánLos que están
(ex) Windows Common Controls 2(ex) Windows Common Controls 2TreeViewTreeView
ListViewListView
StatusBarStatusBar
ToolbarToolbar
Windows FormsWindows FormsToolTipToolTip
HelpProviderHelpProvider
MainMenuMainMenu
ContextMenuContextMenu
Mejorando la experiencia del Mejorando la experiencia del usuariousuario
Entornos similares a los ya conocidosEntornos similares a los ya conocidosExplorerExplorer
Internet ExplorerInternet Explorer
Funcionalidades similares Funcionalidades similares ¡Aprender mucho a usar Office!¡Aprender mucho a usar Office!
Mejorando la experiencia del Mejorando la experiencia del usuariousuario
Menús adaptativosMenú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)
Mejorando la experiencia del Mejorando la experiencia del usuariousuario
Informar al usuario, mientras se Informar al usuario, mientras se realizan tareasrealizan tareas
Sub Informar(Optional ByVal texto As String = "")
Estado.Panels(0).Text = texto
DoEvents()
End Sub
Mejorando la experiencia del Mejorando la experiencia del usuariousuario
Informar al usuario, mientras se Informar al usuario, mientras se realizan tareas (Progreso)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
Mejorando la experiencia del Mejorando la experiencia del usuariousuario
Gráfica entendibleGrá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
Mejorando la experiencia del Mejorando la experiencia del usuariousuario
Arrastrar y colocar (alias Arrastrar y colocar (alias Drag and Drag and DropDrop))
Del OrigenDel OrigenItemDragItemDrag
Del DestinoDel DestinoDragEnterDragEnter
DragOverDragOver
DragDropDragDrop
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
Mejorando la experiencia del Mejorando la experiencia del usuariousuario
El usuario espera comportamientosEl usuario espera comportamientosPreservar información de la aplicación Preservar información de la aplicación para la próxima llamadapara la próxima llamada
Posición y tamaño de la ventanaPosición y tamaño de la ventana
Opciones de visualizaciónOpciones de visualización
Etc.Etc.
El usuario se asusta con las ventanas El usuario se asusta con las ventanas rarasraras
Dejar algo en la retaguardia, como último Dejar algo en la retaguardia, como último control de errorescontrol de errores
Cuando los que están no Cuando los que están no alcanzanalcanzan
ListViewListViewControl “esperado” por el usuarioControl “esperado” por el usuario
Lo ve cada día, en Internet Explorer, OutlookLo ve cada día, en Internet Explorer, Outlook
ProblemasProblemasNo es vinculable a datosNo es vinculable a datos
Ordena por caracteresOrdena por caracteres
No “reacciona” a los cambios en los datosNo “reacciona” a los cambios en los datos
DataListViewDataListView
… … y vamos a tener que hablar de y vamos a tener que hablar de herenciaherencia
Funcionalidad previstaFuncionalidad previstaLa que tiene ListView (esto es herencia)La que tiene ListView (esto es herencia)
Vinculable a datosVinculable a datos
OrdenableOrdenable
Sensible a los cambios de los datos Sensible a los cambios de los datos subyacentessubyacentes
Creando DataListViewCreando DataListView
Un proyecto de ControlesUn proyecto de ControlesUna clase Una clase
(o sea, sacamos el UserControl)(o sea, sacamos el UserControl)
Que hereda de Que hereda de System.Windows.Forms.ListViewSystem.Windows.Forms.ListView
Para aprovechar la funcionalidad existentePara aprovechar la funcionalidad existente
Agregamos atributos para definir su Agregamos atributos para definir su comportamientocomportamiento
<System.ComponentModel.ToolboxItem(True), _
System.ComponentModel.DefaultEvent("DoubleClick"), _
ToolboxBitmap(GetType(DataListView))> _
Creando DataListViewCreando DataListView
Agregamos nuestras propiedadesAgregamos nuestras propiedadesDataSourceDataSource
DataMemberDataMember
Procedimientos para CargarProcedimientos para CargarVincularVincular
Define las columnas y carga los itemsDefine las columnas y carga los items
Cada item debiera contener la fila que lo Cada item debiera contener la fila que lo generagenera
Cambiar ListItemCambiar ListItem(Heredando de ListItem)(Heredando de ListItem)
Definiendo DataListItemDefiniendo DataListItem
Otra claseOtra claseQue hereda de Que hereda de System.Windows.Forms.ListViewItemSystem.Windows.Forms.ListViewItem
Expone Expone DataRowDataRow
Key (que le falta al ListViewItem)Key (que le falta al ListViewItem)
Pero necesitamos que se exponga este Pero necesitamos que se exponga este tipo en lugar del propio del ListView en la tipo en lugar del propio del ListView en la propiedad Itemspropiedad Items
Definiendo Definiendo DataListItemCollectionDataListItemCollection
Otra clase másOtra clase másQue hereda de Que hereda de System.Windows.Forms.ListView.ListViewItemCollectionSystem.Windows.Forms.ListView.ListViewItemCollection
Contiene los DataListItemContiene los DataListItemPara accederlos por clave, utiliza un HashTablePara accederlos por clave, utiliza un HashTable
Se deben reemplazar los miembros comunes, Se deben reemplazar los miembros comunes, para que su comportamiento se adapte a para que su comportamiento se adapte a nuestros requerimientosnuestros requerimientos
AddAdd
ClearClear
ItemItem
RemoveRemove
Ordenando…Ordenando…
Se debe asignar la propiedad Se debe asignar la propiedad ListViewItemSorterListViewItemSorter
Con una clase que implemente la Con una clase que implemente la Interfaz Interfaz System.Collections.IcomparerSystem.Collections.Icomparer
Devolviendo el resultado de la comparación Devolviendo el resultado de la comparación del valor de los campos, en lugar de la del valor de los campos, en lugar de la comparación de cadenas de caracterescomparación de cadenas de caracteres
-1 Menor-1 Menor
0 Iguales0 Iguales
1 Mayor1 Mayor
PreguntasPreguntas