Ir para conteúdo
Fórum Script Brasil
  • 0

Data Grid - Scroll


Andersonjb

Pergunta

E ai Pessoal, beleza? Bem, digamos que eu tenha Duas Datas Grids, com o nome de dghexa e dg char. Bem, eu queria manipular o scroll delas. Bem, como eu não achei uma propriedade correta para isso, eu consegui achar o evento Scroll. Bem, a minha ideia e a seguinte: e a de que quando eu movimento o Scroll da dghexa o Scroll da dgchar tambem se movimente, entenderam? Bem, como eu não achei propriedade, achei so o evento, pensei em chamar um evento dentro do outro ( o evento do scroll da dgchar dentro do evento scroll da dghexa ), so que não sei fazer isso e não sei se daria certo. alguém poderia me dar uma mão?

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Sim, tinha olhado e olha só:

5.60 How do I programmatically scroll the datagrid to a particular row?   

The DataGrid has a protected GridVScrolled member that can be used to scroll the grid. To use it, you can derive from DataGrid and add a ScrollToRow method. Here is a code snippet.

    Public Class MyDataGrid

      Inherits DataGrid

          Sub ScrollToRow(ByVal row As Integer)

              If Not Me.DataSource Is Nothing Then

                    Me.GridVScrolled(Me, New ScrollEventArgs(ScrollEventType.LargeIncrement, row))

              End If

          End Sub 

Esse metodo ai somente faz modificar o tamanho do alcance do scroll, não e? Por exemplo: o scroll desce quantas linhas voce determinar no parametro do método, correto? Pelo menos foi o que eu entendi e eu não consegui usar por aqui... Estou certo ou Errado?

Link para o comentário
Compartilhar em outros sites

  • 0
Sim, tinha olhado e olha só:

5.60 How do I programmatically scroll the datagrid to a particular row?   

The DataGrid has a protected GridVScrolled member that can be used to scroll the grid. To use it, you can derive from DataGrid and add a ScrollToRow method. Here is a code snippet.

    Public Class MyDataGrid

      Inherits DataGrid

          Sub ScrollToRow(ByVal row As Integer)

              If Not Me.DataSource Is Nothing Then

                    Me.GridVScrolled(Me, New ScrollEventArgs(ScrollEventType.LargeIncrement, row))

              End If

          End Sub 

Esse metodo ai somente faz modificar o tamanho do alcance do scroll, não e? Por exemplo: o scroll desce quantas linhas voce determinar no parametro do método, correto? Pelo menos foi o que eu entendi e eu não consegui usar por aqui... Estou certo ou Errado?

Está certo... e não é disso que você precisa? Afinal de contas, não existe um método para fazer a rolagem, e é isso que o código acima está implementando. Utilizando a nova classe (MyDataGrid) no lugar da classe original (DataGrid) você então terá o método ScrollToRow() que lhe permitirá rolar para uma determinada linha. Não é disso que você precisa?

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
não, eu preciso do seguinte: Eu tenho duas DataGrid's, correto? Ao descer a scroll da primeira DataGrid, o scroll da segunda DataGrid, tambem desça, entendeu?

Para a bicicleta andar foi necessário que primeiro a roda fosse inventada, correto? rolleyes.gif (Aliás, para a idéia de uma bicicleta ser concebida, com certeza a roda já deveria existir...). Então, você precisa de um jeito de fazer a rolagem via código antes de poder fazer com que uma DataGrid realize a rolagem em outra. Declare a seguinte classe dentro da classe do form:

    Public Class MyDataGrid
        Inherits DataGrid

        Public Event VScroll(ByVal sender As Object, ByVal se As System.Windows.Forms.ScrollEventArgs)

        Public Sub ScrollTo(ByVal se As ScrollEventArgs)
            If Not Me.DataSource Is Nothing Then
                Me.GridVScrolled(Me, se)
            End If
        End Sub

        Protected Overrides Sub GridVScrolled(ByVal sender As Object, ByVal se As System.Windows.Forms.ScrollEventArgs)
            MyBase.GridVScrolled(sender, se)
            RaiseEvent VScroll(sender, se)
        End Sub
    End Class
Depois disso, vá na região "Windows Form Designer generated code" e troque os "System.Windows.Forms.DataGrid" por "MyDataGrid". Com isso estaremos utilizando a classe acima ao invés da classe original. Você vai reparar que agora dgChar e dgHexa possuirão um novo evento chamado, VScroll. Bastará ir neste evento do dgHexa e colocar:
        dgChar.ScrollTo(se)

Isso também porque agora existirá um método chamado ScrollTo (o lance da roda da bicicleta... smile.gif). Execute o projeto e role a dgHexa para ver que a dgChar também irá rolar.

Sacou? wink.gif

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Falei demais, rsrs. Problemas: bem, quando fui fazer que ao rolar a segunda datagrid a primeira rolasse novamente, deu erro aqui, nenhuma mais delas rolavam. Bem, a unica coisa que eu fiz foi chamar o metodo no evento:

   Private Sub dgchar_VScroll(ByVal sender As Object, ByVal se As System.Windows.Forms.ScrollEventArgs) Handles dgchar.VScroll
        dghexa.ScrollTo(se)
    End Sub

Eu não poderia fazer isto?

Link para o comentário
Compartilhar em outros sites

  • 0

Falei demais, rsrs. Problemas: bem, quando fui fazer que ao rolar a segunda datagrid a primeira rolasse novamente, deu erro aqui, nenhuma mais delas rolavam. Bem, a unica coisa que eu fiz foi chamar o metodo no evento:

   Private Sub dgchar_VScroll(ByVal sender As Object, ByVal se As System.Windows.Forms.ScrollEventArgs) Handles dgchar.VScroll
        dghexa.ScrollTo(se)
    End Sub

Eu não poderia fazer isto?

Não, já que rolar a primeira grade significa rolar a segunda, e do jeito que você colocou, rolar a segunda também significa rolar a primeira. Primeira -> Segunda -> Primeira -> Segunda -> Primeira -> Segunda -> ... e assim vai até o final dos tempos... (ou até ocorrer estouro de pilha...) biggrin.gif

Vai ser necessário fazer isso de outra forma então. Vou pensar em algo aqui e te retorno mais tarde.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...