Mouse e DataGridView
28/09/2008
0
Estou com o seguinte problema:
Tenho um DataGridView e gostaria que a seleção de colunas seguisse o movimento do mouse de modo que a linha em que o cursor do mouse estiver posicionado seja a linha selecionada sempre, sem que seja preciso clicar com o mouse para seleciona-la.
Alguém tem idéia de como conseguir isso?
Estou quebrando a cabeça.
Hal9000
Posts
09/10/2008
Codename.v
Segue abaixo o código para fazer a seleção como você deseja.
[b:866b864cd0]Obs.: Antes você precisa mudar a propriedade MultiSelect do seu controle DataGridView para false[/b:866b864cd0]
Private Sub DataGridView1_CellMouseEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellMouseEnter If (e.RowIndex <> -1) Then DataGridView1.Rows(e.RowIndex).Selected = True End If End Sub
Abraços!
09/10/2008
Hal9000
Funcionou como vc disse, mas ainda não marca a Linha como A linha atual.
Eu explico:
Estou usando um menu no grid um contextmenustrip com as opções de Alteração, inclusão e impressão. então quando eu clico no menu eu recupero a linha do grid selecionada.
Apesar de estar marcada pelo posicionamento do mouse no grid a alinha que me é retornada é sempre a primeira. :(
A linha que eu uso para recuperar a Row Selecionada é a seguinte:
grdConsulta.Rows(grdConsulta.CurrentRow.Index).Cells(0).Value
Vou tentar alguma coisa aqui, mas se tiver alguma solução ´Posta´ ai
tks a lot...
10/10/2008
Codename.v
Dim idSelecionado As Integer Private Sub DataGridView1_CellMouseEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellMouseEnter If (e.RowIndex <> -1) Then DataGridView1.Rows(e.RowIndex).Selected = True idSelecionado = Convert.ToInt32(DataGridView1.Rows(e.RowIndex).Cells(0).ToString()) End If End Sub
Sendo Cell 0 o campo em que encontra-se o registro de id. Desta forma você sabe qual o item selecionado simplesmente consultando a variável idSelecionado.
Acho que isso deve resolver o problema.
Abraços!
10/10/2008
Hal9000
Realmente assim, funcionou. é que eu estava tentando recuperar o código em outra chamada.
No final o código ficou assim:
If (e.RowIndex <> -1) Then grdConsulta.Rows(e.RowIndex).Selected = True Id_Chave = CInt(grdConsulta.Rows(e.RowIndex).Cells(0).Value) End If
To postando pq se não colocar o ´.value´ no final.. dá pau.
Abrigado pela ajuda V.
11/10/2008
Codename.v
Mas realmente você está certo. Tanto em uma quanto na outra linguagem o ´.Value´ é indispensável.
Fico feliz em ter ajudado. Abraços!
Clique aqui para fazer login e interagir na Comunidade :)