Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117

    [VB.NET] - Rilevare Scrolls nella datagridview

    Salve a tutti! E' possibile rilevare se nella mia datagridview son visibili le scroll verticali?
    Non parlo della proprietà che le attiva ma proprio di verificare oggettivamente se in quel momento sono presenti o meno!

  2. #2
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    mmmm mi sa che non si può fare

  3. #3
    Utente di HTML.it L'avatar di Vinsent
    Registrato dal
    May 2011
    Messaggi
    314
    Potresti fare così, quando aggiungi/ridimensioni le colonne/righe ne sommi le dimensioni e fai il raffronto con le dimensioni del datagridview, se ci stanno dentro le scroll non ci sono e viceversa...

  4. #4
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    E come le raffronto scusa? :/

  5. #5
    Utente di HTML.it L'avatar di Vinsent
    Registrato dal
    May 2011
    Messaggi
    314
    Originariamente inviato da Veronica80
    E come le raffronto scusa? :/
    ...........

    Qualche riga di esempio che al resize delle colonne fa il "raffronto":
    codice:
        Private Sub DataGridView1_ColumnWidthChanged() Handles DataGridView1.ColumnWidthChanged
            Dim somma As Integer
            Dim scroll_attive As Boolean
            somma = DataGridView1.RowHeadersWidth
            For a = 0 To DataGridView1.ColumnCount - 1
                somma += DataGridView1.Columns(a).Width
                If somma >= DataGridView1.Width Then
                    scroll_attive = True
                    Exit For
                Else
                    scroll_attive = False
                End If
            Next
            If scroll_attive = True Then
                Console.WriteLine("scroll attivate")
            Else
                Console.WriteLine("scroll disattivate")
            End If
        End Sub

  6. #6
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Scusami Vin...ma come ho scritto su: parlavo delle scroll verticali!
    Quelle orizzontali non son previste essendo il form Fixed3D! :/

    Il problema è che quando superò l'area utile della datagridview attiva automaticamente (ovviamente) le scroll verticali!

    Potrei fare lo stesso giro però sommando le altezze delle righe moltiplicandolo per il numero di righe e poi confrontare con l'altezza del DGW...mmm potrebbe funzionare! :P Ora provo!

  7. #7
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    il problema ora è ricavarmi l'altezza della riga visto che non mi pare ci sia come proprietà :P e che non è fissa da Sistema operativo a sistema operativo (tipo da 7 a XP) ho visto che cambia xD

  8. #8
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Come non detto! SOno una polla!

    ho fatto questa sub:

    codice:
    Public Sub ridimensionaColonnaDGW(ByVal idColonnaDaRidimensionare As Integer, ByVal mioDGW As DataGridView)
        Dim altezzaTotaleRighe As Integer = 0
        If mioDGW.Rows.Count > 0 Then
            Dim miaRiga As DataGridViewRow = mioDGW.Rows(0)
            Dim altezzaRiga As Integer = miaRiga.Height
            miaRiga.Dispose()
            For Each riga As DataGridViewRow In mioDGW.Rows
                altezzaTotaleRighe += altezzaRiga
            Next
        End If
        Dim larghezzaScroll As Integer = 17
        '4 è il margine di sicurezza in pixel
        Dim differenzaWidht As Integer = 4
    
        For Each colonna As DataGridViewColumn In mioDGW.Columns
            If colonna.Visible = True And colonna.Index <> idColonnaDaRidimensionare Then
                differenzaWidht += colonna.Width
            End If
        Next
    
        Dim newWidthColonna As Integer = mioDGW.Width - differenzaWidht
    
        If altezzaTotaleRighe >= mioDGW.Height Then
            'Scroll attive riduco un po la colonna 
            mioDGW.Columns(idColonnaDaRidimensionare).Width = newWidthColonna - larghezzaScroll
        Else
            'Scroll disattive
            mioDGW.Columns(idColonnaDaRidimensionare).Width = newWidthColonna
        End If
    End Sub
    Non l'ho collaudata ma credo funzionerà!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.