none
doble click en rowheader RRS feed

  • Pregunta

  • Hola a todos

    Estoy usando vb 2010 

    Tengo un codigo en el cual dispara una una serie de funciones al hacer doble click sobre una fila determinada de un datagrid

     

    Dim row As DataGridViewRow = gridRubros.CurrentRow

    dialogControlObraEditar.DateTimePicker1.Value = row.Cells("Fecha").Value

    dialogControlObraEditar.lblRubro.Text = row.Cells("Rubros").Value.....

     

    esto funciona muy bien

     

     

    Ahora 

    Deselecciono cualquier fila con 

     gridRubros.ClearSelection()

    Pero se presenta la situación de querer hacer un ajuste del ancho de la columna. Para lo cual voy y hago doble click entre dos limites de columnas de un columnheader pero igual dispara lo anteriormente citado y quisiera que no lo haga. Mas bien que haga el ajuste normal entre las columnas

    Espero puedan ayudarme

    Saluds

    Carlos

     

    Edito: perdon el titulo, seria Doble click en columnheader

    martes, 26 de julio de 2011 19:19

Respuestas

  • "carlosanpy" escribió:

    > Pero se presenta la situación de querer hacer un ajuste del ancho de la columna.
    > Para lo cual voy y hago doble click entre dos limites de columnas de un columnheader
    > pero igual dispara lo anteriormente citado y quisiera que no lo haga.

    Hola, Carlos:

    Entiendo que las propiedades de la clase DataGridViewCellEventArgs del evento CellDoubleClick están para algo. ;-)

    Si se ha hecho doble clic en una columna del encabezado, el valor de la propiedad RowIndex será -1, por tanto, bastaría colocar la siguiente línea al comienzo del evento CellDoubleClick:

        If e.RowIndex = -1 Then
          ' Se ha efectuado un doble clic en el encabezado
          ' de alguna columna.
          '
          Return
        End If
    

    Un saludo


    Enrique Martínez
      [MS MVP - VB]

    • Marcado como respuesta carlosanpy miércoles, 27 de julio de 2011 14:15
    miércoles, 27 de julio de 2011 14:12
    Moderador

Todas las respuestas

  • hola

    http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/e81076b5-9b21-40df-8bd3-c4ae059ff5f8#ef46a07c-d7c3-4a61-bf0f-36040689bc6f

    como veras solo es cuestion de validar sino es -1 el row y col index que llegan al evento

    tambien se que se peue hacer con el HitTest

     

     

    Private Sub dataGridView1_MouseDoubleClick(sender As Object, e As MouseEventArgs)
    	Dim hit As DataGridView.HitTestInfo = dataGridView1.HitTest(e.X, e.Y)
    	If hit.Type = DataGridViewHitTestType.RowHeader Then
    		MessageBox.Show("RowHeader")
    	End If
    	If hit.Type = DataGridViewHitTestType.ColumnHeader Then
    		MessageBox.Show("ColumnHeader")
    	End If
    
    End Sub
    


     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 26 de julio de 2011 21:20
  • Pero me sigue marcando el index 0 al hacer doble click en el columnheader cuando debería ser efectivamente -1

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

                Dim row As DataGridViewRow = gridRubros.CurrentRow

                If gridRubros.CurrentRow.Index < -1 Then

                    dialogControlObraEditar.DateTimePicker1.Value = row.Cells("Fecha").Value

                    dialogControlObraEditar.lblRubro.Text = row.Cells("Rubros").Value

                   dialogControlObraEditar.ShowDialog()

                End If

        End Sub

    miércoles, 27 de julio de 2011 13:35
  • pero es al contrario el signo

    debe sere mayo a -1 para saber que es una row

    si es -1 es el header


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 27 de julio de 2011 13:41
  • ok seria entonces si es diferente a -1  <> -1 

    pero veo que ocurre otra situación, al hacer esto  

    gridRubros.ClearSelection()

    y luego al hacer doble click sobre el header selecciona de nuevo una fila (no se porque), selecciona la ultima fila que he seleccionado y limpiado con el clear y creo que esto es lo que impide correr bien la función

    miércoles, 27 de julio de 2011 14:04
  • "carlosanpy" escribió:

    > Pero se presenta la situación de querer hacer un ajuste del ancho de la columna.
    > Para lo cual voy y hago doble click entre dos limites de columnas de un columnheader
    > pero igual dispara lo anteriormente citado y quisiera que no lo haga.

    Hola, Carlos:

    Entiendo que las propiedades de la clase DataGridViewCellEventArgs del evento CellDoubleClick están para algo. ;-)

    Si se ha hecho doble clic en una columna del encabezado, el valor de la propiedad RowIndex será -1, por tanto, bastaría colocar la siguiente línea al comienzo del evento CellDoubleClick:

        If e.RowIndex = -1 Then
          ' Se ha efectuado un doble clic en el encabezado
          ' de alguna columna.
          '
          Return
        End If
    

    Un saludo


    Enrique Martínez
      [MS MVP - VB]

    • Marcado como respuesta carlosanpy miércoles, 27 de julio de 2011 14:15
    miércoles, 27 de julio de 2011 14:12
    Moderador