viernes, 24 de octubre de 2014

CheckBox, ComboBox, Button dentro de un DatagridView en VB


Hola, a todos a menudo me ha pasado que quiero manejar eventos de un DataGridView y/o personalizarlos como el ComboBoxSelectedIndex, CheckedChanged y ButtonClick dentro de un DatagridView asi que hice una librería (DLL) para manejar esos tres eventos.

Basándome en un ejemplo
 







Como ven en esta Grilla utilizo Diferentes Tipo de Columnas y para cada una manejo un evento diferente para realizar un proceso distinto
·         El Boton solo me abre un Cuadro de Dialogo para seleccionar un archivo dependiendo de la extensión

·         El ComboBox lista todos los formatos permitidos EJEMPLO(.TXT, .XLSX, ETC)

·         El CheckBox indica si se debe visualizar la ruta o no.
Hasta ai tenemos el Diseño, como ya tenemos la DLL en este Post les Explicare a cómo utilizarlo Primero deben descargar la DLL que estará adjunto a este Post después la agregan como referencia a su proyecto espero no tener que explicar cómo agregar una referencia.
Descargar DLL
Una vez hecho esto


Ahora como utlizamos los eventos?, primero debemos definir el metodo que se ejecutara al dispararse Cierto Evento.

Por ejemplo yo quiero que el siguiente metodo se ejecute al Darle un Check a mi CheckBOX
Sub VisualizarRuta(ByVal celda As DataGridViewCheckBoxCell, ByVal column As DataGridViewCheckBoxColumn)

If celda.Value = True Then
 If String.IsNullOrEmpty(Ruta) Then

MsgBox("No Se ah Seleccionado el Archivo", MsgBoxStyle.Information, "Ruta...")

Exit Sub
 End If

dgvFiles.Rows(celda.RowIndex).Cells(0).Value = RutaElseIf celda.Value = False Then

dgvFiles.Rows(celda.RowIndex).Cells(0).Value = "*************************"
 End If

End Sub

Como se habran dado cuenta mi metodo recibe 2 parametros de entrada para poder ejecutarse estos parametros son necesarios espacificarlos independiente de si se hace uso de ellos o no. Quizas se pregunten para que???

esos parametros son necesarios para el evento que queremos si te fijas bien el evento que deseamos ejecutar tiene esos mismo parametros es por eso.

Una vez ya definidos nuestro metodo lo enlazamos al evento que necesitamos.




Pero antes de eso una de las Cosas más Importantes está en el Constructor se debe crear una instancia en el Constructor después de que se llame al método del diseñador de lo contrario nos botara error ya que nuestra grilla aun no existiría, se puede crear una instancia después de la llamada al Diseñador pero antes no, es recomendable que sea en el constructor.
Primero definimos nuestras Variables Globales


 
Dim dt As New DataTable
Dim obj As DatagridView_Events.DatagridView_Events
Dim myExtension As String = String.Empty
Dim DescExtenxion As String = String.Empty
Dim Ruta As String = String.Empty

Declaramos un Constructor y crea la instancia pasando como parametro nuestro datagridview

Sub New()
' Llamada necesaria para el diseñador.
InitializeComponent()
'CREAMOS UNA INSTANCIA PASANDO COMO PARAMETRO EL DATAGRIDVIEW
obj = New DatagridView_Events.DatagridView_Events(Me.dgvFiles)
' Agregue cualquier inicialización después de la llamada a InitializeComponent().
Aqui Enlazamos los eventos que necesitamos en nuestro caso seria el evento CheckBox_CheckedChanged_Datagridview que nos provee la DLL este evento tiene 2 parametros que mencionamos anteriormente.
Como nuestro metodo ya tiene esos 2 parametros podemos enlazarlo de la siguiente forma:

AddHandler <EVENTO>, AddressOf <METODO>
AddHandler obj.CheckBox_CheckedChanged_Datagridview, AddressOf VisualizarRuta


Enlazamos los Eventos que utilizaremos Que nos provee la DLL Cada Vez que se Dispare el Evento el metodo se ejecutara    Sintaxis para enlazar Eventos:
 AddHandler <EVENTO>, AddressOf <METODO>     
NOTA: Estos eventos son del DatagridView que se paso como Parametro   Si se tiene mas de 1 Datagridview Crear otro objeto o  Puede Utilizar el Metodo <Inicialisar_Events> para eliminarr la instancia anterior  y agregar una nueva con el DataGridView que se pase como Parametro
       
         
En el Codigo Anterior se define los metodos que se ejecutaran en cada evento, Es importante crear una nuava instacia de la siguiente forma
obj =

New DatagridView_Events.DatagridView_Events(Me.dgvFiles)

Esta linea se debe poner Antes de enlazar los eventos.
 
'Remueve lso Eventos que se esten utilizando por el Objeto
 'Los eventos del Checked, ComboBox, Button del DatagridView no estaran disponibles
 'para volver a usarlos tendra que utilizar el metodo <Inicialisar_Events(<DATAGRIDVIEW>)


obj.Finalizar_Events() 
'para volver a usarlos tendra que utilizar el metodo <Inicialisar_Events(<DATAGRIDVIEW>)
obj.Inicialisar_Events(Me.dgvFiles)


Este Proyecto FUE DESARROLLADO UTILLIZANDO VB 2010
Descargar Proyect





1 comentario:

  1. Cualquier duda Avisen y bueno para el siguiente publicare el Codigo fuente de la DLL ala que se hace Referencia pero comenten si quieren el Codigo Fuente para Pasarles. Saludos

    ResponderEliminar