jueves, 20 de febrero de 2014

DataGridView en Windows.Form (Winforms) con herencia visual


Me resistí por mucho tiempo a usar el componente DataGridView ya que muchas de mis bibliotecas de programación en .Net (c#) estaban hechas sobre el componente antiguo DataGrid por lo que me costo trabajo tener que migrar, pero al hacer mis primeros pruebas me tope con un inconveniente (porque no me sorprende de microsoft?) que su nuevo componente para manejo de grillas (DataGridView) no soportaba herencia visual (Tengo un formulario con un datagridview y cuando se hereda este formulario aparece el datagridview bloqueado como si estuviera declarado como private o readonly a pesar de cambiar a public o protected la propiedad Modifiers) a diferencia de su hermano mas viejo (datagrid) que no presenta problemas con herencia y edición visual. Pero por suerte encontré un método para pasar este problema, y hago este post debido a que muchos blog y otros sites muestran  un fragmento de código pero no indican detalladamente como se procede, así que aquí va mi aporte.
ANTECEDENTES: Tengo un proyecto WindowsForm ya creado.

1.- En el proyecto le doy click derecho y le digo "agregar elemento" y luego en la ventana emergente elijo "Windows Form" y luego "Control de usuario". Aquí una observación, estoy usando VS2012, no encontre otro modo de crear un Control de usuario, al menos antiguamente creaba un proyecto de tipo componente y lo manejaba como una dll, supongo que en VS2012 tambien lo hay solo que no encontré que tipo de proyecto crear, así que lo que estoy mostrando es crear un "Control de usuario" personalizado, pero dentro del mismo proyecto donde se le utiliza, en caso de que se requiera reutilizar el componente que crearemos no es contemplado en este posts.


2.- Al crear el "Control de usuario" me aparecerá una especie de panel donde debería agregar componentes visuales para crear el componente, en este caso arrastro de la paleta de herramientas un datagridview. (Luego debe modificar la propiedad Dock y colocar para que abarque todo el área del componente que estamos creando)


3.- Hecho esto editamos el código y si no se cambio nada debe verse de este modo.


4.- Luego debemos modificar para que el código se vea como a continuación. (Obviamente su namespace debe ser el mismo que el de su proyecto, así que esa linea es mejor dejarla tal cual se genero por vs2012)


5.- Una vez hecho el cambio, veremos que hay cambios automáticos en la parte visual, como por ejemplo el icono del archivo (a la mano derecha) cambia, y el componente datagridview ya no se ve mas, sino que cambia a el icono mostrado aquí abajo.


Bueno esto es todo, luego de esto es suficiente arrastrar al formulario que deseemos y este podrá ser heredado con todas sus opciones visuales en el formulario hijo.

Nota.- Los pasos fueron hechos en el IDE: Visual Studio 2012 con lenguaje c#

No hay comentarios.:

Publicar un comentario