Es una aplicacion que controla eventos personalizados lo unico que se necesita es usarlos aqui les dejo el Codigo de la aplicacion que utiliza estos eventos que menciono para que sepan como usarlos.
este es el Diseño y aqui el Codigo Documentado
Imports DatagridView_Events
Imports System.IO
Public Class Form1
'Declaramos Las Variables Necessarias
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
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().
'Enlazamos los Eventos que utilizaremos en mi caso utilizare los 3 eventos
'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
AddHandler obj.Click_Button_Datagridview, AddressOf AbrirArchivo
AddHandler obj.ComboBox_SelectedValue_DatagridView, AddressOf ObtenerExtencion
AddHandler obj.CheckBox_CheckedChanged_Datagridview, AddressOf VisualizarRuta
AddHandler obj.Link_Click_DatagridView, AddressOf Abrir_Archivo
AddHandler obj.ComboBox_SelectedIndex_DatagridView, AddressOf SelectedINdex
AddHandler obj.Click_Image_DatagridView, AddressOf EstablecerImagen
AddHandler obj.TextBox_KeyPress_DataGridView, AddressOf KeyPressTextbox
End Sub
'metodo que controlara el evento KeyPress del DatagridViewTextBox
Sub KeyPressTextbox(ByVal sender As Object, ByVal e As KeyPressEventArgs)
If e.KeyChar = Chr(13) Then
'Confirmamos los cambios al presionar enter
dgvFiles.EndEdit()
End If
End Sub
'metodo que controlara el evento click del Image_DatagridView
Sub EstablecerImagen(ByVal sender As Object)
'Establecemos el Filtro para las imagenes
Dim cel As DataGridViewImageCell = TryCast(sender, DataGridViewImageCell)
Dim openFileDialog1 As New OpenFileDialog()
openFileDialog1.InitialDirectory = "c:\"
openFileDialog1.Filter = "(Image files)|" & "*.jpg;*.png;*.bmp" '& "|All files (*.*)|*.*"
openFileDialog1.FilterIndex = 2
openFileDialog1.RestoreDirectory = True
If openFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
Try
If String.IsNullOrEmpty(openFileDialog1.FileName) = False Then
'Si el archivo seleccionado es valido lo asignamos al valor de la celda
cel.Value = Image.FromFile(openFileDialog1.FileName)
End If
Catch Ex As Exception
MessageBox.Show("Cannot read file from disk. Original error: " & Ex.Message)
Finally
End Try
End If
End Sub
'Metodo que Control el eventoCheckedChanged del CheckBox
'Se visualiza la ruta en el LinK si el valor del CheckBox es true de lo contrario no
Sub VisualizarRuta(ByVal celda As DataGridViewCheckBoxCell, ByVal column As DataGridViewCheckBoxColumn, Optional ByRef r As String = "")
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 = Ruta
ElseIf celda.Value = False Then
dgvFiles.Rows(celda.RowIndex).Cells(0).Value = "*******************"
End If
End Sub
'Este metodo Controla el Evento SelectedIndex del Combo
'Pero como no lo necesito lo dejo en blanco a manera de ejemplo
'ustedes podrian agragar codigo si lo consideran necesario
Sub SelectedINdex(ByVal sender As Object, ByVal e As EventArgs)
End Sub
'metodo que controla el SelectedValue del ComboBox
Sub ObtenerExtencion(ByVal sender As Object, ByVal e As EventArgs)
Dim comb = TryCast(sender, DataGridViewComboBoxEditingControl)
DescExtenxion = comb.Text
myExtension = comb.SelectedValue
End Sub
'metodo que controla el evento Click del Button_DataGridView
Sub AbrirArchivo(ByVal cell As DataGridViewButtonCell, ByVal col As DataGridViewButtonColumn)
'Establecemos el filtro segun el tipo de archivo que se seleccione en el ComboBox
Dim openFileDialog1 As New OpenFileDialog()
openFileDialog1.InitialDirectory = "c:\"
openFileDialog1.Filter = DescExtenxion & " files (*" & myExtension & ")|*" & myExtension '& "|All files (*.*)|*.*"
openFileDialog1.FilterIndex = 2
openFileDialog1.RestoreDirectory = True
If String.IsNullOrEmpty(myExtension) Or String.IsNullOrEmpty(DescExtenxion) Then
MsgBox("Seleccione el Tipo de Archivo en El Combo...")
Exit Sub
End If
If openFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
Try
If String.IsNullOrEmpty(openFileDialog1.FileName) = False Then
Ruta = openFileDialog1.FileName 'Guardamos la ruta del archivo
End If
Catch Ex As Exception
MessageBox.Show("Cannot read file from disk. Original error: " & Ex.Message)
Finally
End Try
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Armamos el DataTable Con los tipos de Archivos que estaran disponibles
dt.Columns.Add("Codigo")
dt.Columns.Add("Valor")
Dim dr As DataRow = dt.NewRow
dr("Codigo") = ".txt" 'Extension del archivo
dr("Valor") = "Archivo TXT" 'Descripcion del archivo
dt.Rows.Add(dr)
dr = dt.NewRow
dr("Codigo") = ".xlsx"
dr("Valor") = "Archivo Excel"
dt.Rows.Add(dr) 'Agregamos al DataTable
Dim comboCol = TryCast(Me.dgvFiles.Columns(3), DataGridViewComboBoxColumn)
'Asignamos el DataTable a la Columna del ComboBox
If TypeOf comboCol Is DataGridViewComboBoxColumn Then
comboCol.DataSource = dt
comboCol.ValueMember = "Codigo"
comboCol.DisplayMember = "Valor"
End If
End Sub
Private Sub btnRemover_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRemover.Click
'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()
End Sub
Private Sub btnAgregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAgregar.Click
'para volver a usarlos tendra que utilizar el metodo <Inicialisar_Events(<DATAGRIDVIEW>)
obj.Inicialisar_Events(Me.dgvFiles)
End Sub
Private Sub dgvFiles_RowEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvFiles.RowEnter
'Limpiamos los valores al pasar a otra fila
DescExtenxion = String.Empty
myExtension = String.Empty
Ruta = String.Empty
End Sub
'metodo que controla el evento Link_Click_DatagridView del lINK
Sub Abrir_Archivo(ByVal Sender As Object)
'Obtenemos el valor y abrimos el archivo
Dim cel As DataGridViewLinkCell = TryCast(Sender, DataGridViewLinkCell)
Process.Start(cel.Value.ToString)
End Sub
End Class
Aqui el Proyecto entero fue realizado en VS2012 no lo explico por partes por que ya ise un Post sobre esto asi que si aun no lo haz Visto te recomiendo que te des una vuelta por Este Post.
Claro que el que este post esta mas actualizado con mas evento pero el uso es el mismo.
Cualquier duda escribanme a mi correo o dejen sus comentarios.
No hay comentarios:
Publicar un comentario