Mouse e DataGridView
Olá a todos.
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.
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
Curtidas 0
Respostas
Codename.v
28/09/2008
Olá! O controle DataGridView possui um evento chamado CellMouseEnter que ocorre toda vez que o ponteiro do mouse é posicionado sobre uma nova linha.
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]
Abraços!
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!
GOSTEI 0
Hal9000
28/09/2008
Olá. V.
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:
Vou tentar alguma coisa aqui, mas se tiver alguma solução ´Posta´ ai
tks a lot...
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...
GOSTEI 0
Codename.v
28/09/2008
Vamos supor que você queira regatar o id do registro que está sendo exibido no DataGridView.
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!
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!
GOSTEI 0
Hal9000
28/09/2008
Perfeito...
Realmente assim, funcionou. é que eu estava tentando recuperar o código em outra chamada.
No final o código ficou assim:
To postando pq se não colocar o ´.value´ no final.. dá pau.
Abrigado pela ajuda V.
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.
GOSTEI 0
Codename.v
28/09/2008
É... eu coloquei mais ou menos como seria rs! Eu sou mais acostumado com o C# :)
Mas realmente você está certo. Tanto em uma quanto na outra linguagem o ´.Value´ é indispensável.
Fico feliz em ter ajudado. Abraços!
Mas realmente você está certo. Tanto em uma quanto na outra linguagem o ´.Value´ é indispensável.
Fico feliz em ter ajudado. Abraços!
GOSTEI 0