Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
707
Assunto : VB.NET
Titulo: Fazer com que a GRID não tenha célula ativa, apenas seleção em linhas

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



A Grid não possui uma propriedade que diretamente resolva este problema. Para chegarmos na solução precisamos lidar com as classes de estilo da grid.

A dataGrid possui uma propriedade chamada TableStyles. Esta propriedade é preenchida com um objeto TableStyle, que determina o estilo visual da grid. Cada objeto TableStyle possui uma propriedade GridColumnStyles que é preenchida com variações da classe DataGridColumnStyles (esta classe propriamente é abstrata, para o preenchimento utilizamos classes filhas).

A solução para o problema de seleção é criarmos uma nova classe herdando de DataGridTextboxColumn (que por sua vez herda de DataGridColumnStyles) e fazermos um overrides no método Edit sem chamar a classe base, fazendo com que ao clicarmos em uma célula esta não se torne a célula ativa.

Veja como fica a classe :

Imports Microsoft.VisualBasic
Imports System
Imports System.Drawing
Imports System.Windows.Forms

Public Class DataGridNoActiveCellColumn
Inherits DataGridTextBoxColumn
Private SelectedRow As Integer

Protected Overloads Overrides Sub Edit(ByVal source As CurrencyManager, ByVal rowNum As Integer, ByVal bounds As Rectangle, ByVal [readOnly] As Boolean, ByVal instantText As String, ByVal cellIsVisible As Boolean)
'make sure selectedrow is valid
If (SelectedRow > -1) And (SelectedRow < source.List.Count + 1) Then
Me.DataGridTableStyle.DataGrid.UnSelect(SelectedRow)
End If
SelectedRow = rowNum
Me.DataGridTableStyle.DataGrid.Select(SelectedRow)

End Sub
End Class

Feito isso devemos configurar os estilos por código :

Dim ts As New DataGridTableStyle
Dim col As DataColumn
ts.MappingName = "Customers"
For Each col In Ds1.Customers.Columns
Dim cs As New DataGridNoActiveCellColumn
cs.MappingName = col.ColumnName
ts.GridColumnStyles.Add(cs)
Next
DG.TableStyles.Add(ts)
DA.Fill(Ds1)



Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
data: 11/28/2017 6:08:00 AM
nome: UNuSSjsYLKhaCPOcuhW
email: jimosanil0c@hotmail.com
comentário:
t9kTBH http://www.LnAJ7K8QSpfMO2wQ8gO.com

 1  
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br