Ir al contenido principal

Entradas

Mostrando entradas de 2011

Personalizar DataGridView (II.1) - Bloquear columnas de solo lectura

Bien, continuando con la personalización del control DataGridView y como ya hemos visto en los artículos anteriores.
Personalizar DataGridView (I) - Pintar área vacía. Personalizar DataGridView (II) - Bloquear columnas de solo lectura. Personalizar DataGridView (III) - Cambiar Diseñador.

Continuaremos con el articulo II, en ocasiones se nos presenta la necesidad de saltar "x" columna de este control sin necesidad de que esta este marcada como solo lectura, por el simple hecho de que el usuario no quiere pasar sobre esta columna porque no necesita modificar su contenido, salvo en aquellos casos que si se requiera, generalmente no se quiere atrasar pasando sobre estas columnas.
Para estos casos lo que yo he hecho es agregarle un evento al control al cual he llamado "BeforeFocusColumn" el cual se ejecuta antes de cambiar la columna activa, con la idea de validar la columna que recibirá el foco, validar y en caso de ser necesario cambiar esta columna por la que nosotros nec…

Personalizar DataGridView - Actualizaciones

Revisión 12 Diciembre 2011.
Mejora en los métodos auxiliares para saltar las columnas marcadas como solo lectura, considerando las columnas marcadas como no visibles, como también si el control no es el primero en recibir el foco al mostrarse su formulario o contenedor.Se cambio la forma de procesar la tecla "ENTER" para avanzar a la siguiente columna, sobre escribiendo el método ProcessCmdKey. [C#]
  protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == Keys.Enter && this.EnterMoveNextColumn) { msg.WParam = (IntPtr)NativeMethods.VK_TAB; return base.ProcessCmdKey(ref msg, Keys.Tab); } return base.ProcessCmdKey(ref msg, keyData); }   Descargar:
Codigo Fuente [C#]

Personalizar DataGridView (II) - Bloquear columnas de solo lectura

Personalizar DataGridView - Actualizaciones
Personalizar DataGridView (II.1) - Bloquear columnas de solo lectura.
Personalizar DataGridView (III) - Cambiar Diseñador.

Bien, continuando con el articulo "Personalizar DataGridView (I) - Pintar área vacía", ahora lo que haré es darle al control la funcionalidad de bloquear las columnas cuya propiedad "ReadOnly" se establezca en "true", entiéndase por "Bloquear" el evitar que las columnas cuya propiedad "ReadOnly=true" puedan recibir el foco, ya sea por el teclado o por el ratón (mouse).
Para tal objetivo agregare una nueva propiedad al control la cual llamare "AllowFocusReadOnlyColumns" cuyo valor predeterminado sera "true", en caso de ser "false" las columnas marcadas como solo lectura no recibirán el foco.

También le daré la funcionalidad de poder avanzar a la siguiente columna al presionar la tecla "ENTER" agregando otra propiedad que llamare "Ent…

Personalizar DataGridView (I) - Pintar área vacía

Personalizar DataGridView (II) - Bloquear columnas de solo lectura.
Personalizar DataGridView - Actualizaciones.
Personalizar DataGridView (II.1) - Bloquear columnas de solo lectura.
Personalizar DataGridView (III) - Cambiar Diseñador.

Bien, como lo dice el titulo vamos a personalizar el control DataGridView y lo haremos en varios artículos, en este lo que hare es pintar el área del control que queda vacía cuando tenemos un origen de datos con pocos registros, a esta área la llamare "Empty Area", así que en lugar de que se vea de esta manera.


haré que se vea de esta otra manera.

para esto crearemos nuestro propio control que herede de DataGridView al cual llamare MEPDataGridView, sobre escribiremos los métodos OnCellPainting y OnPaint del control, creare 5 métodos auxiliares "PaintColumnHeader", "PaintIndicatorHeader", "PaintRowIndicator", "PaintCell" y "PaintEmptyArea" y un Argumento "PaintingEventArgs" que hereda de Ev…

How to: Adding "Control" inside "ComponentTray" in "VS" design surface

Bueno, ultima mente he estado visitando el foro de Windows Form Designer ya que es un foro donde se trata mucho sobre diseñar controles personalizados, he respondido a un par de preguntas pero la que más me llamo la atención es esta:  Create a Control who will appear in the designer like a Component and a Control



Aún estoy pensando la utilidad que se le podría dar al agregar un control al área de componentes del diseñador, pero bien!!!... si Microsoft lo implementa con el control "ToolStrip", pues su uso tendrá, cada cabeza es un mundo así que me di a la tarea de buscar la forma de hacer lo que se pedía en esa pregunta, hasta que encontré dos maneras de hacerlo. ¿Donde las encontré?... en mi cabeza. naaaaaaa... bueno!!!, si, solo que tuve que debuggear mucho.
Brinde dos opciones para hacerlo, la segunda opción tiene un error, ya que se usa una interfaz que es interna, la cual esta en el namespace "System.Windows.Forms.Design.ISplitWindowService" por alguna razón Mi…

¿Como crear un control personalizado en .Net C#/VBasic?

Descargar Codigo Fuente 93.99KBDescargar Projecto de Muestra 56.13KBEn muchas ocasiones nos hemos visto en la necesidad de crear, extender o personalizar alguno que otro de los controles nativos del .Net Framework ya sea en C# o Visual Basic, cuando es un control simple esto suele ser fácil ya que solemos agregar nuevas propiedades y ocultar las que no son necesarias o modificar el Paint para hacer que el control se pinte al gusto nuestro, claro!!!!… este ultimo a según el control.Pero cuando es un control que contendrá otros controles personalizados el tema cambia, ya que hay que crear el editor de la colección del control que contendrá nuestro control, interactuar con el diseñador del Visual Studio para hacer uso de los comandos Deshacer (Undo) y Rehacer (Redo) y modificar el Smart Tag del control Padre (Contenedor) para agregar métodos o propiedades que queremos sean de acceso rápido.Para poder ver este tema he creado un nuevo control que he llamado GroupPanel, este hereda de Syste…

Instalador

Bueno, en vista de la reciente demanda en algunos de mis controles he decidido crear un instalador para que estos controles (NetBarControl y TextEditor) se agreguen a la barra de herramientas del Visual Studio. Este instalador funciona para VS2008 y VS2010 y asumo que también funcionara para la próxima versión de VS. En caso de que tenga las dos versiones de VS deberán seleccionar en que versión de VS desean que se agreguen los controles en la barra de herramientas. y luego en la barra de herramientas del VS deberá de aparecer de la siguiente manera.
Al descargar el archivo lo pueden descomprimir en cualquier directorio de su disco duro ejemplo: “C:\OtrosControles” y ejecutan el archivo “Instalador.exe” Y si se pregunta ¿Como lo hizo?, bueno, pues les debo el Link al artículo porque no lo tengo guardado en los favoritos de esta computadora… ah!!!!… lo olvidaba, en esta archivo comprimido ya va la ultima versión de ambos controles corrigiendo los problemas que ha reportado en NetBarCo…

TextEditor

Este control nace a raíz de una pregunta en el foro de Visual Basic .Net, sobre como cambiar el borde de un TextBox a un borde personalizado y además andaba buscando cambiar la apariencia del control NetBarControl para poder aplicarle una nueva propiedad para cambiar el estilo. ejemplo:


Aun que esta imagen solo es un pre-formato de cómo funcionara el control NetBarControl, solo que me distraje creando este nuevo control TextEditor. Así que le echaré mano al terminado este nuevo control.







Bien, la idea inicial era solo agregar botones a un control TextBox, pero luego usando el Mozilla, al descargar unos archivos me percate de un control en la parte inferior de esta venta de descargar, aun que se suele ver mucho en las páginas Web, pero me llamo la atención aquí en el Mozilla y en el Window Live Messenger.


Entonces… me entro el gusano de la curiosidad, agregar la imagen luego de agregar los botones ya no era la parte difícil, la parte curiosa es mostrar el Texto como marca de agua, enco…

NetBarControl

Actualización.
NetBarControl - Description Item Style (New)




NetBarControl (Outlook Bar) es uno de los controles que muchas veces buscamos para usar en nuestras aplicaciones, pero siempre encontramos en internet versiones pagables y tal vez no contamos con el presupuesto esperado como para comprar uno y las versiones gratis que se logran encontrar, pues como son gratis no implementan en su totalidad la funcionalidad que esperamos encontrar en un control de este tipo. Antes de comenzar a escribir este control dedique tiempo en buscar uno por internet que tuviera toda la funcionalidad o por lo menos una interfaz disponible en modo de diseño, pero, no logre encontrar uno, así que me propuse crearlo como a mí me gustaría que funcionara uno gratis y al final llegue a la conclusión de ¿Porque no hay uno completo, gratis y que incluya el código fuente? y la respuesta es:No es fácil, pero tampoco es cosa de otro mundo. Con esto no digo que otro programador no lo pueda hacer o que los ejemplos en…