DATAGRIDVIEW CELULA FORA DE VISAO SCROLBAR

MAXCIM 11/12/2012 16:34:38
#415807
olá amigos,

como identifico que uma célula, ou coluna não esta mais visível, quando se arrasta o scrowbar?

desde ja abradeço
PROFESSOR 15/12/2012 15:50:44
#416006
Resposta escolhida
Segue um exemplo:


[ô][ô][ô] <summary>
[ô][ô][ô] Crie um formulário padrão
[ô][ô][ô] (WinForms | StartPosition = CenterScreen) com:
[ô][ô][ô] - Um Label (Label1 | Dock = Button)
[ô][ô][ô] - Um DataGridView (DataGridView1 | Dock = Fill)
[ô][ô][ô] </summary>
[ô][ô][ô] <remarks></remarks>
Public Class Form1
[ô][ô][ô] <summary>
[ô][ô][ô] Tabela para preenchimento da grade.
[ô][ô][ô] </summary>
[ô][ô][ô] <remarks></remarks>
Private dtb As DataTable = Nothing
[ô][ô][ô] <summary>
[ô][ô][ô] Na carga do formulário, vincular
[ô][ô][ô] a tabela á grade, selecionar a
[ô][ô][ô] linha 100 e torná-la a 1ª visivel.
[ô][ô][ô] </summary>
[ô][ô][ô] <param name=[Ô]sender[Ô]></param>
[ô][ô][ô] <param name=[Ô]e[Ô]></param>
[ô][ô][ô] <remarks></remarks>
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
Me.Text = [Ô]Testes com DataGridView[Ô]
Me.Label1.SendToBack()
CriaTabela()
With Me.DataGridView1
.BringToFront()
.DataSource = dtb
.Rows(100).Selected = True
.FirstDisplayedCell = .Rows(100).Cells(0)
End With
End Sub
[ô][ô][ô] <summary>
[ô][ô][ô] Rotina para a criar e popular a tabela.
[ô][ô][ô] </summary>
[ô][ô][ô] <remarks></remarks>
Private Sub CriaTabela()
dtb = New DataTable([Ô]Tabela[Ô])
With dtb
With .Columns
.Add([Ô]Código[Ô], GetType(Integer))
.Add([Ô]Texto[Ô], GetType(String))
.Add([Ô]Data[Ô], GetType(DateTime))
End With
.PrimaryKey = {.Columns(0)}
With .Rows
For iPos As Integer = 1 To 200
Dim a As Integer = iPos
Dim b As String = String.Format([Ô]Texto {0}[Ô], iPos)
Dim c As Date = DateAdd(DateInterval.Day, iPos, Now)
Dim r As DataRow = .Add(a, b, c)
r.AcceptChanges()
Next
End With
End With
End Sub
[ô][ô][ô] <summary>
[ô][ô][ô] Ao mover a barra de rolagem, verifica se as
[ô][ô][ô] linhas 0 e 100 estão visíveis
[ô][ô][ô] </summary>
[ô][ô][ô] <param name=[Ô]sender[Ô]></param>
[ô][ô][ô] <param name=[Ô]e[Ô]></param>
[ô][ô][ô] <remarks></remarks>
Private Sub DataGridView1_Scroll(sender As Object, _
e As ScrollEventArgs) Handles _
DataGridView1.Scroll
Dim r1 As DataGridViewRow = DataGridView1.Rows(0)
Dim r2 As DataGridViewRow = DataGridView1.Rows(100)
Dim msg As String = [Ô]Linha 0: {0}{1}Linha 100: {2}[Ô]
Dim v1 As String = IIf(IsRowVisible(r1) = True, [Ô]Visível[Ô], [Ô]Oculta[Ô])
Dim v2 As String = IIf(IsRowVisible(r2) = True, [Ô]Visível[Ô], [Ô]Oculta[Ô])
Label1.Text = String.Format(msg, v1, vbNewLine, v2)
End Sub
[ô][ô][ô] <summary>
[ô][ô][ô] Função para verificar se uma
[ô][ô][ô] DataGridViewRow está visível.
[ô][ô][ô] </summary>
[ô][ô][ô] <param name=[Ô]dgr[Ô]>DataGridViewRow</param>
[ô][ô][ô] <returns>Verdadeiro ou Falso</returns>
[ô][ô][ô] <remarks></remarks>
Public Function IsRowVisible(ByRef dgr As DataGridViewRow) As Boolean
Dim ret As Boolean = False
Try
[ô]Grade da linha
Dim dgv As DataGridView = dgr.DataGridView
[ô]Posição da linha
Dim posAtual As Integer = dgr.Cells(0).RowIndex
[ô]Primeira linha visível
Dim VisivelA As Integer = dgv.FirstDisplayedCell.RowIndex
[ô]Quantidade de linhas visíveis
Dim Visiveis As Integer = dgv.DisplayedRowCount(False)
[ô]Última linha visível
Dim VisivelN As Integer = (VisivelA + Visiveis)
[ô]Está visível ?
ret = (posAtual >= VisivelA) AndAlso (posAtual <= VisivelN)
Catch ex As Exception
ret = False
End Try
Return ret
End Function
End Class
MAXCIM 15/12/2012 17:08:11
#416008
Perfeito professor!!! valeu brigadão!
Tópico encerrado , respostas não são mais permitidas