En el trabajo
con el control del Datagridview encontramos cierta necesidad a cubrir, como que
solo permita edición unas columnas y otras no, los focos ubicados específicamente
en una columna.
Estas dos
preguntas se les darán solución con nuestro ejemplo que se encuentra
descargable la fuente en la parte inferior de este post, cabe agradecerles y
esperar que les sea de utilidad.
Creamos nuestra Aplicación
en visual Studio 2010, es una aplicación de escritorio y llamamos nuestro
formulario frPrincipal.
Agregamos un control
Datagridview y empezamos a modificar sus propiedades. Encontramos EditMode la
cual especifica cómo se va a realizar la edición de las celdas. Para nuestra
necesidad la vamos a programar nosotros entonces usamos Datagridview.EditMode =
EditProgrammatically;
Una
vez modificada esta propiedad, la forma de modificar las celdas anteriormente
utilizadas no son permitidas (F2 y/o doble clic sobre la celda). Se crearon
manualmente las columnas para tenerlas en el diseñador.
Para
efectos de este ejemplo vamos a crear 4 columnas y 5 registros (5 filas), en la
propiedad columns del control encontramos la pantalla que nos permite realizar
la creación de ID, Nombre, Costo, Existencias.
Los datos de este ejemplo se llenan manualmente con estas líneas de código.
Ya tenemos nuestra aplicación
con los datos cargados.
Ahora tenemos queremos que
cuando le de clic en las columnas Nombre y Existencias, estas se habiliten para
su edición, pero queremos mantener Id y Costo como “No editables”.
Usamos el evento CellClick
que tiene lugar cuando se da clic en cualquier parte de la celda para poder
llevar a cabo nuestra tarea. Entonces tenemos:
Para saber la posición en
la que se dio clic usamos una variable para alojar la fila en donde se desato
el evento y ponemos la condición que si no se está efectuando en las columnas
permitidas este evento no tenga efecto y no se ponga editable, pero si está en
una de las columnas editables usamos la propiedad BeginEdit(true) para poner la
celda especifica en modo editable.
En el punto de la pregunta
que decía que quería una modificación vertical para evitar errores del usuario
tenemos que usar el evento KeyUp del datagridview para que una vez el Enter sea
“soltado” por el usuario, se posicione en la fila siguiente en un sentido descendente.
Para esto usamos una condición
para saber si se están presionando las teclas que vamos habilitar para la validación
del movimiento.
Finalmente movernos entre
las dos columnas que nos interesa editar usamos en evento KeyDown del
datagridview para que tan pronto sea presionado haga lo que necesitamos y no se
preste para otro evento no deseado.
Tenemos una matriz con
unos parámetros específicos de funcionamiento y vamos a controlar que se lleva
a cabo en nuestro control.
Descargar Fuente
Saludos y Gracias.
JamC.








No hay comentarios:
Publicar un comentario