none
llamar al evento DataGridView.CellDoubleClick RRS feed

  • Pregunta

  • Hola a todos!

    Tengo una duda sobre el evento CellDoubleClick del datagrid. Cuando quiero llamar a un evento click de un boton pongo  Button1.PerformClick() y el boton se ejecuta.

    Me gustaria hacer lo mismo con el evento double click del datagrid, pero no se si es posible.¿alguien sabe?

    Explico mi programa por si no sabeis que quiero hacer

    Mi programa recorre 3 formularios:

    -form1(textbox,button)

    -form_transito(datagridview) 

    -form_pesaje(datos del camion).

    en el form1 introduzco la matricula de un camion, al darle al boton comprueba que ese camion no este en la tabla transito de mi base de datos.

    Si no esta es que el camion entra y me lleva al formulario pesaje donde relleno sus datos, lo que carga o descarga y lo peso.Estos datos me los guarda en transito.

    Ahora que el camion esta en transito si vuelvo al form1 e introduzco su matricula me dira que esta en transito y me lleva al form_transito para que lo vea en datagrid.

    Si ese camion se quiere ir,doy doble click sobre la celda y me lleva a form_pesaje con sus datos cargados y de nuevo lo vuelvo a pesar y a guardar en otra tabla que llame movimientos.

    bien ahora lo que quiero es que en vez de darle yo doble click sobre la celda del datagrid, el programa lo ejecute  directamente en el load de transito que llego a través del botón button1

    Imports System.Data.OleDb

    Public Class Form_transito

        Dim ds As New DataSet

        Dim APP_PATH As String = My.Application.Info.DirectoryPath 'camino de la aplicacion

        Dim rutabd As String = leer_ini(APP_PATH & "\ruta.ini", "base de datos", "BD", "")

        Dim conexion As New OleDbConnection("PROVIDER=MICROSOFT.JET.OLEDB.4.0; DATA SOURCE=" & rutabd)

        Public vengo_d_trans As Boolean 'para saber en el formulario pesaje si vengo de trans

        Public v_matricula_trans As String

        Public v_cli_pro_trans As String

        Public v_productos_trans As String

        Public v_origen_trans As String

        Public v_destino_trans As String

        Public v_peso_entrada_trans As String

        Public v_hora_entrada_trans As String

        Public v_fecha_trans As String

        Public v_tipo_client_prove As String

        Public v_operacion_trans As String

        Public v_ticket_trans As String

        Private Sub Form_transito_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

      

            Me.MdiParent = Form_contenedor

            'cargamos el datadrig

            Dim txt_transito As String = ("select * from transito")

            Dim comando_transito As New OleDbCommand(txt_transito, conexion)

            Dim da As New OleDbDataAdapter(comando_transito)

            ds.Clear()

            da.Fill(ds, "transito")

            DataGridView1.DataSource = ds.Tables("transito")

            Aquí es donde quiero poner el código para que se posicione en la celda de la matricula que le mando por textbox y que le haga doble click

        End Sub

     

        'LE DECIMOS QUE AL CLICKEAR DOS VECES SOBRE UNA CELDA NOS GUARDE EN INDICE EL VALOR DE QUE HAY EN LA CELDA 1 Y QUE LA LLEVE AL FORMULARIO PESAJE

       

        Private Sub DataGridView1_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick

           

            v_matricula_trans = Me.DataGridView1.Rows(e.RowIndex).Cells(1).Value       'indice es el valor de lo que hay en la celda en la que he hecho doble click

            v_cli_pro_trans = Me.DataGridView1.Rows(e.RowIndex).Cells(4).Value

            v_productos_trans = Me.DataGridView1.Rows(e.RowIndex).Cells(3).Value

            v_origen_trans = Me.DataGridView1.Rows(e.RowIndex).Cells(5).Value

            v_destino_trans = Me.DataGridView1.Rows(e.RowIndex).Cells(6).Value

            v_peso_entrada_trans = Me.DataGridView1.Rows(e.RowIndex).Cells(7).Value

            v_hora_entrada_trans = Me.DataGridView1.Rows(e.RowIndex).Cells(8).Value

            v_fecha_trans = Me.DataGridView1.Rows(e.RowIndex).Cells(9).Value

            v_tipo_client_prove = Me.DataGridView1.Rows(e.RowIndex).Cells(11).Value

            v_ticket_trans = Me.DataGridView1.Rows(e.RowIndex).Cells(10).Value

    v_operacion_trans = Me.DataGridView1.Rows(e.RowIndex).Cells(2).Value

    pesaje.Show()

    End Sub

     

    End Class

    Mil gracias a todas las ayudas!


    miércoles, 30 de abril de 2014 7:28

Todas las respuestas

  • Supongo que debes invocar al método DataGridView1_CellDoubleClick de la instancia de la clase form_transito

    dim cea as New DataGridViewCellEventArgs

    cea.RowIndex = aquí el índice de la fila
    cea.ColumnIndex = veo que a este no lo usas
    ft.DataGridView1_CellDoubleClick(ft.DataGridView1, cea)

    o bien puedes derivar tu propia clase DataGridView y agregar un método PerformDblClick y desde allí llamar a OnCellDoubleClick(). Luego en tu programa usarías PerformDblClick().

    miércoles, 30 de abril de 2014 12:42