locked
LLAMAR UN FORMULARIO DESDE UN DATAGRID.. AYUDA!!!!!! RRS feed

  • Pregunta

  • hola
    k tal tengo un problema es estado buskando por internet y no encotr nada T^T
    mi problema es lo siguiente
    tengo un datagridview y bueno
    digamos un ejemplo este datagridview tienes 3 columnas
    y bueno yo ingreso datos de forma manual al datagridview
    y digamos hay un campo en el datagrid k kiero cuando presione enter o otra tecla me salga un formulario de ayuda
    diga estoy en la celda 1 no sale nada
    celda 2 no sale nada
    celda 3 cuando presione una tecla o enter me salga un formulario
    puede ser cualkier celda
    como ago eso una ayuda...
    deRuNoMas
    viernes, 19 de junio de 2009 21:42

Respuestas

  • "deRuNoMas" preguntó:

    > digamos hay un campo en el datagrid k kiero cuando presione
    > enter o otra tecla me salga un formulario de ayuda
    > diga estoy en la celda 1 no sale nada
    > celda 2 no sale nada
    > celda 3 cuando presione una tecla o enter me salga un formulario
    > puede ser cualkier celda
    > como ago eso una ayuda...

    Es decir, que deseas que te aparezca el formulario ÚNICAMENTE cuando pulsas la tecla Enter, o cualquier otra tecla, en alguna celda de la tercera columna de tu control DataGridView.

    Para ello, sobrescribe el método ProcessCmdKey en el formulario que contiene el control DataGridView, para ejecutar el siguiente código:

        Protected Overrides Function ProcessCmdKey( _
            ByRef msg As Message, keyData As Keys) As Boolean

            ' Indice de la columna de la celda actual
            '
            Dim columnIndex As Integer = DataGridView1.CurrentCell.ColumnIndex

            ' Si no es la tercera columna, abandonamos el procedimiento
            '
            If (columnIndex <> 2) Then _
                Return MyBase.ProcessCmdKey(msg, keyData)

            ' Control activo actualmente
            '
            Dim ctrl As Control = ActiveControl

            If (Not TypeOf ctrl Is DataGridViewTextBoxEditingControl) Then _
                Return MyBase.ProcessCmdKey(msg, keyData)

            ' Si se ha pulsado la tecla Return, mostramos
            ' el formulario
            '
            If (keyData = Keys.Enter) Then
                Using frm As New Form2()
                    frm.ShowDialog()
                End Using

                Return True

            End If

            Return MyBase.ProcessCmdKey(msg, keyData)

        End Function

    Como podrás observar, se mostrará el formulario cuando se pulse la tecla Enter. Pero si deseas mostrarlo cuando se pulse cualquier tecla, entonces sustituye la parte del código donde se detecta la tecla Enter para ejecutar lo siguiente:

            ' Si se ha pulsado cualquier tecla, mostramos
            ' el formulario
            '
            Using frm As New Form2()
                frm.ShowDialog()
            End Using

            Return True

    Un saludo

     


    Enrique Martínez
      [MS MVP - VB]

    domingo, 22 de mayo de 2011 16:55
    Moderador

Todas las respuestas

  • Private Sub verperpag_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles verperpag.KeyPress If e.KeyChar = Chr(13) Then verinfsala.ShowDialog()/////en esta parte colocas el codigo o accion que quieres que realize End If coloca este codigo en en evetento keypress nota el grid por default tiene un evento en el enter entonces tienes que desabilitarlo con el siguienete codigo del evento key down Private Sub verperpag_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles verperpag.KeyDown If (e.KeyCode = Keys.Enter) Then e.Handled = True End If End Sub vale espero que te sirva
    viernes, 19 de junio de 2009 21:56
  • hola k tal tio
    uh..
    creo k no leiste bien
    te cuento
    tengo un datagridview kiero llamar desde el datagridview un formulario
    pero no todo el datagridview
    si no desde una celda del datagridview
    digamos estoy posicionado en la celda  2 de x fila
    me salga el formulario 2 digamos
    ahora me voy a la celda 3 x fila que me salga otro formulario puede ser formulario3  asi
    como llamar formulario desde una celda
    grax men te agradeceria k me ayudaras
    deRuNoMas
    viernes, 19 de junio de 2009 22:09
  • Hola Aqui dejo una pequena ayuda parapoder hacer lo que necesitas en el datagrid... analizalo espero te ayude

    AGREGA UN DATA GRID Y SIN MODIFICAR NADA EN EL AGREGA EL SIGUIENTE CODIGO FUREA DE TODAS LA SUB DECLARADAS EN EL FORM

     
     Public Sub New()
            Me.InitializeComponent()
            Me.DataGridView1.Columns.Add("Formularios", "Formularios")
            Me.DataGridView1.Rows.Add("Formualrio 1")
            Me.DataGridView1.Rows.Add("Formualrio 2")
            Me.DataGridView1.Rows.Add("Formualrio 3")
              Me.TopMost = True
    End Sub



     Private Sub DataGridView1_RowEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.RowEnter      
    Dim Esteform As New Form
    Esteform.Text = "ayuda"
    Esteform.Show()
    End Sub
    CUANDO SE INICIA EL PROYECTO SE MOSTRARA EL FORMULARIO PORQUE TENDRA SELECCIONADA UNA ROW DEL DATA GRID PERO AL CERRAR DICHOS FORMULARIOS, CADA VEZ QUE EL ROW RECIBE EL FOCO SE MOSTRARA UN FORMULARIO 

    espero te haya ayudado con lo que necesitabas

    Saludos


    Melvin.
    sábado, 20 de junio de 2009 8:25
  • hola
    bueno ya e comentado esto hace poko
    tal vez no vieron lo k comente bueno
    tengo un problema
    uhh
    kiero llamar un formulario desde un datagridview
    pero desde una celda especifica
    digamos estoy en la fila 5 colunma 3
    presiono enter me salga un formulario
    si estoy en otros k no esa esa celda no me sale nada
    uha ayuda..!!
    no encuentro nada plz!! ayuda!!!
    o una idea para poder resolver esto..
    deRuNoMas
    lunes, 22 de junio de 2009 16:18
  • Anterior mente puse un ejemplo en este link que tu preguntastes espero te ayude

    http://social.msdn.microsoft.com/Forums/es-ES/vbes/thread/ea309948-2508-4af8-8602-9e863537431f


    Saludos

    Melvin
    Todo Es posible si se studia con exfuerso no importando los de mas Dios esta con nosotros y no hay mas sabiduria que la de Dios, Everything is posible if you study a lot wiht esforce , God Loves us and there isn't anybody like God.... Melvin Saludos
    lunes, 22 de junio de 2009 18:27
  • si men
    pero uhhh
    cuando hizo  lo k me dijiste
    bueno llama pero cuando doy click en cualkier celda
    yo kiero llamar a un formulario pero
    de una celda especifica
    digamos estoy en la fila 5 columna 3 llame al form1
    estoy en la fila 3 columna 8 llame form2
    masomenos asi
    tu idea esta bien
    pero me llama de una fila  en cualkier columna
    trate de agregar algo pero no me resulto
    una ayuda!!

    deRuNoMas
    lunes, 22 de junio de 2009 18:35
  • Bueno aqui te dejo otro ejemplo diferente amigo espero lo entiendas






    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'fila que se buscara Cambiar Item(0) a Item (1) u otro Dim Row = Me.DataGridView1.Rows.Item(0) 'tiene que Considir con el Row Buscado If Row.Index = 0 Then Row.Selected = True Dim Esteform As New Form Esteform.Text = "ayuda" Esteform.Show() Me.DataGridView1.CurrentRow.Selected = False End If End Sub

    Saludos
    melvin


    Todo Es posible si se studia con exfuerso no importando los de mas Dios esta con nosotros y no hay mas sabiduria que la de Dios, Everything is posible if you study a lot wiht esforce , God Loves us and there isn't anybody like God.... Melvin Saludos
    lunes, 22 de junio de 2009 18:48
  • "deRuNoMas" preguntó:

    > digamos hay un campo en el datagrid k kiero cuando presione
    > enter o otra tecla me salga un formulario de ayuda
    > diga estoy en la celda 1 no sale nada
    > celda 2 no sale nada
    > celda 3 cuando presione una tecla o enter me salga un formulario
    > puede ser cualkier celda
    > como ago eso una ayuda...

    Es decir, que deseas que te aparezca el formulario ÚNICAMENTE cuando pulsas la tecla Enter, o cualquier otra tecla, en alguna celda de la tercera columna de tu control DataGridView.

    Para ello, sobrescribe el método ProcessCmdKey en el formulario que contiene el control DataGridView, para ejecutar el siguiente código:

        Protected Overrides Function ProcessCmdKey( _
            ByRef msg As Message, keyData As Keys) As Boolean

            ' Indice de la columna de la celda actual
            '
            Dim columnIndex As Integer = DataGridView1.CurrentCell.ColumnIndex

            ' Si no es la tercera columna, abandonamos el procedimiento
            '
            If (columnIndex <> 2) Then _
                Return MyBase.ProcessCmdKey(msg, keyData)

            ' Control activo actualmente
            '
            Dim ctrl As Control = ActiveControl

            If (Not TypeOf ctrl Is DataGridViewTextBoxEditingControl) Then _
                Return MyBase.ProcessCmdKey(msg, keyData)

            ' Si se ha pulsado la tecla Return, mostramos
            ' el formulario
            '
            If (keyData = Keys.Enter) Then
                Using frm As New Form2()
                    frm.ShowDialog()
                End Using

                Return True

            End If

            Return MyBase.ProcessCmdKey(msg, keyData)

        End Function

    Como podrás observar, se mostrará el formulario cuando se pulse la tecla Enter. Pero si deseas mostrarlo cuando se pulse cualquier tecla, entonces sustituye la parte del código donde se detecta la tecla Enter para ejecutar lo siguiente:

            ' Si se ha pulsado cualquier tecla, mostramos
            ' el formulario
            '
            Using frm As New Form2()
                frm.ShowDialog()
            End Using

            Return True

    Un saludo

     


    Enrique Martínez
      [MS MVP - VB]

    domingo, 22 de mayo de 2011 16:55
    Moderador