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!
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!
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...
...........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
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!
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
Come non detto! SOno una polla!
ho fatto questa sub:
Non l'ho collaudata ma credo funzionerà!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