Ir al contenido principal

Entradas

Mostrando entradas de diciembre, 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…