DATAGRIDVIEW COLUMN HEADER

 Tópico anterior Próximo tópico Novo tópico

DATAGRIDVIEW COLUMN HEADER

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#410092 - 20/09/2012 16:30:41

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009


Boa tarde, galera.

Estou utilizando um DataGridView e quando o usurio clicar com  boto direito em um registro dela, aparece um ContextMenuStrip com algumas opes que ele ir executar.
Pois bem, funciona perfeitamente, porm, se eu clicar com o boto direito no cabealho do DataGridView, o menu tambm aparece.
Existe uma maneira de impedir isso, ou existe uma propriedade do DataGridView que impea isso?

At mais.

____________________________________________________
No h nessa vida algo que no se possa alcanar, voc s precisa ir buscar.

#410094 - 20/09/2012 16:36:18

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Dependendo do evento em que esteja acionando o ContextMenu, existe a propriedade []Em que linha est[], veja em que evento est acionando isso. Se estiver acionando em um evento que tenha a propriedade []Row[] ou coisa do gnero, verifique se o valor maior que 0, que equivale ao cabealho.

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#410097 - 20/09/2012 17:01:02

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009


Kerplunk, eu []peguei[] essas rotinas de algum lugar na net, e estou usando elas para fazer isso.
Voc saberia me dizer se est correto e onde eu verifico o que voc falou?

   Private Sub DgvProdutos_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DgvProdutos.MouseDown
        Dim hti As DataGridView.HitTestInfo = DgvProdutos.HitTest(e.X, e.Y)
        If hti.RowIndex > -1 Then
            For i As Integer = 0 To DgvProdutos.Rows.Count - 1
                DgvProdutos.Rows(i).Selected = False
            Next
            DgvProdutos.Rows(hti.RowIndex).Selected = True
        End If
    End Sub

    Private Sub DgvProdutos_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DgvProdutos.MouseUp
        Dim hti As DataGridView.HitTestInfo = DgvProdutos.HitTest(e.X, e.Y)
        If (e.Button = MouseButtons.Right) Then
            hti = DgvProdutos.HitTest(e.X, e.Y)
            []            If (hti.Type = DataGridViewHitTestType.Cell And hti.ColumnIndex = 0) Then
            []            ContextMenuStrip1.Show(DgvProdutos, New Point(e.X, e.Y))
            []        End If
            ContextMenuStrip1.Show(DgvProdutos, New Point(e.X, e.Y))
        End If
    End Sub

At mais.

____________________________________________________
No h nessa vida algo que no se possa alcanar, voc s precisa ir buscar.

#410099 - 20/09/2012 17:09:59

GUIMORAES
ITAPETININGA
Cadast. em:Agosto/2009


No entendi por que algumas linhas esto como comentario

Private Sub DgvProdutos_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DgvProdutos.MouseUp
        Dim hti As DataGridView.HitTestInfo = DgvProdutos.HitTest(e.X, e.Y)
        If (e.Button = MouseButtons.Right) Then
            hti = DgvProdutos.HitTest(e.X, e.Y)
            []            If (hti.Type = DataGridViewHitTestType.Cell And hti.ColumnIndex = 0) Then
            []            ContextMenuStrip1.Show(DgvProdutos, New Point(e.X, e.Y))
            []        End If
            ContextMenuStrip1.Show(DgvProdutos, New Point(e.X, e.Y))
        End If
    End Sub

voc poderia deixar assim

        Dim hti As DataGridView.HitTestInfo = DgvProdutos.HitTest(e.X, e.Y)
        If (e.Button = MouseButtons.Right) Then
            hti = DgvProdutos.HitTest(e.X, e.Y)
              If (hti.Type = DataGridViewHitTestType.Cell) Then
                 ContextMenuStrip1.Show(DgvProdutos, New Point(e.X, e.Y))
              End If
        End If

Abraos



#410312 - 24/09/2012 07:24:11

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009


Resolvido !!!!

Modifiquei a rotina:

   Private Sub DgvProdutos_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DgvProdutos.MouseUp
        Dim hti As DataGridView.HitTestInfo = DgvProdutos.HitTest(e.X, e.Y)
        If (e.Button = MouseButtons.Right) Then
            hti = DgvProdutos.HitTest(e.X, e.Y)
            If hti.RowIndex > -1 Then
                For i As Integer = 0 To DgvProdutos.Rows.Count - 1
                    DgvProdutos.Rows(i).Selected = False
                Next
                DgvProdutos.Rows(hti.RowIndex).Selected = True
            Else
                Exit Sub
            End If
            ContextMenuStrip1.Show(DgvProdutos, New Point(e.X, e.Y))
        End If
    End Sub


E deixei a propriedade ContextMenuStrip do DataGridView como (none).
Funcionou perfeitamente.

Valeu pelas tentativas.

At mais.

____________________________________________________
No h nessa vida algo que no se possa alcanar, voc s precisa ir buscar.

 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por PERCIFILHO em 24/09/2012 07:26:44