SELECIONAR LINHA DGV COM O LADO DIREITO DO MOUSE

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

SELECIONAR LINHA DGV COM O LADO DIREITO DO MOUSE

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#484046 - 20/08/2018 09:29:26

SANROMAN
MONGAGUA
Cadast. em:Setembro/2013


Olá amigos

Uso o seguinte código para selecionar uma linha DataGridView:

  Private Sub dgvReceitaZoomMes_MouseDown(sender As Object, e As MouseEventArgs) Handles dgvReceitaZoomMes.MouseDown

        Dim selecionaLinha As DataGridView.HitTestInfo = dgvReceitaZoomMes.HitTest(e.X, e.Y)

        If selecionaLinha.RowIndex > -1 Then

            For i As Integer = 0 To dgvReceitaZoomMes.Rows.Count - 1
                dgvReceitaZoomMes.Rows(i).Selected = False
            Next

            dgvReceitaZoomMes.Rows(selecionaLinha.RowIndex).Selected = True

        End If

    End Sub


Ele seleciona a linha corretamente mas não passa o índice para essa linha selecionada.
Assim sendo não consigo que me mostre o contextmenustrip criado para a linha selecionada. Mostra a última linha com índice antes de selecionar uma nova linha com o lado direito do mouse.

Como faço para, ao apertar o lado direito do mouse, selecionar a linha e mudar o índice para a mesma.
Já tentei de várias formas e não estou conseguindo progredir. Realmente estou precisando de ajuda com esse problema.

Desde já grato pela ajuda.




San Roman

"Por mais distância que a tecnologia possa encurtar, nada é mais próximo do que um abraço."
J.Pires


Resposta escolhida #484053 - 20/08/2018 12:11:17

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


Mais ou menos isso:
Private Sub DataGridView1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseDown
        Dim hti As DataGridView.HitTestInfo = DataGridView1.HitTest(e.X, e.Y)
        If hti.RowIndex > -1 Then
            For i As Integer = 0 To DataGridView1.Rows.Count - 1
                DataGridView1.Rows(i).Selected = False
            Next

            DataGridView1.Rows(hti.RowIndex).Selected = True
        End If
    End Sub

É só adaptar para seu uso.

____________________________________________________
Você sabe que alguém te ama não pelo que ele fala, mas pelo o que faz.
O amor não sobrevive de teorias.




#484069 - 21/08/2018 09:09:42

SANROMAN
MONGAGUA
Cadast. em:Setembro/2013


Bom Dia PerciFilho

O código que deixou como exemplo é exatamente igual ao que postei.

Ou seja, o comportamento é o mesmo, seleciona a linha mas não coloca o índice na linha selecionada.




San Roman

"Por mais distância que a tecnologia possa encurtar, nada é mais próximo do que um abraço."
J.Pires


#484071 - 21/08/2018 10:30:39

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


Desculpa aí, amigo, falte de atenção.
Experimente usar o evento Opening do ContextMenu. Mais ou menos assim: (está em C#)

private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
    dgv.AccessibilityObject.HitTest(MousePosition.X, MousePosition.Y).Select(AccessibleSelection.TakeSelection);
}


Faz tempo que não uso o Vb.Net mas acho que é assim:

Private Sub contextMenuStrip1_Opening(ByVal sender As Object, ByVal e As CancelEventArgs)
    dgv.AccessibilityObject.HitTest(MousePosition.X, MousePosition.Y).[Select](AccessibleSelection.TakeSelection)
End Sub



____________________________________________________
Você sabe que alguém te ama não pelo que ele fala, mas pelo o que faz.
O amor não sobrevive de teorias.




#484073 - 21/08/2018 14:00:52

SANROMAN
MONGAGUA
Cadast. em:Setembro/2013


Boa tarde, PerciFilho

Muito obrigado, funcionou perfeitamente, darei o tópico como encerrado.

Ainda bem que as pessoas se ajudam...

Valeu

San Roman

"Por mais distância que a tecnologia possa encurtar, nada é mais próximo do que um abraço."
J.Pires


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


Tópico encerrado, respostas não sao permitidas
Encerrado por SANROMAN em 21/08/2018 14:03:06