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

    [VB.NET] - Funzione per dimensionare le colonne del listview

    Ciao ragazzi! Ho creato una piccola sub per dimensionare le colonne delle listview in modo che non lascino spazi e che non visualizzino MAI le scroll orizzontali! Ve la posto caso mai potesse servire a qualcuno!

    Questa è la sub:

    codice:
     Public Sub sistemaScrollListview(ByVal miaLista As ListView, ByVal idCol As Integer)
            Dim nColonne As Integer = miaLista.Columns.Count
            Dim sommaWidthCol As Integer = 0
            For i = 0 To nColonne - 1
                If i <> idCol Then
                    sommaWidthCol += miaLista.Columns.Item(i).Width
                End If
            Next
            Dim nRighe As Integer = miaLista.Width / 18                                          '18 è l'altezza di una righa
            Dim wCol As Integer = miaLista.Width - sommaWidthCol - 4                             '4 è un margine
    
            If miaLista.Items.Count > nRighe Then
                miaLista.Columns.Item(idCol).Width = wCol - 17                                   '17 è lo spessore della scroll
            Else
                miaLista.Columns.Item(idCol).Width = wCol
            End If
        End Sub
    Per richiamarla basta scrivere:

    codice:
    sistemaScrollListview(miaListView, 0)
    Dove "miaListView" è il nome della listview con le colonne da sistemare e "0" è l'indice della colonna che adibiremo al ridimensionamento (quella che si allunga e si accorcia alla bisogna per far si che le scrollbar orizzontali non appaiano!)

    Spero sia utile a qualcuno! Io ho sempre odiato quelli spazietti che lasciavo sull'ultima colonna!

    Ciao!

  2. #2
    Alcune cose mi lasciano perplesso. Ad esempio, perché dividi la larghezza della lista per l'altezza di una riga? La larghezza è proporzionale al numero di colonne, non di righe. E chi ti assicura che l'altezza di una riga sia sempre 18, così come il margine sempre 4? Inoltre se la lista è più stretta della larghezza totale delle colonne wCol è negativa.

    Comunque esiste ListView.AutoResizeColumns:
    http://msdn.microsoft.com/en-us/libr...zecolumns.aspx

  3. #3
    Verò forse non ho capito cosa intendevi, ma basta mettere:

    nomelistview.Columns.Item(0).Width = -2 'questo ridimensiona le colonne in modo da occupare tutto lo spazio

    Oppure se lo imposti a -1 le colonne si ridimensionano in base al contenuto occupato nelle righe ...

  4. #4
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    uff...io tempo fa avevo posto il problema colonne e nessuno mi ha detto nulla!


    Ma queste impostazioni (-1, -2) posso metterle a runtime? Perchè io voglio certe colonne con dimensione fissa e altre che si adattino in caso di scroll verticale!

    Totem:
    Si hai ragione li non è il width ma l'height ho sbagliato io scrivendo xD

  5. #5
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Silvesteeeer! Ho provato il tuo metodo (quello del -1 e del -2) ma vedo che ridimensiona le colonne in base al contenuto delle stesse mentre io voglio che (per esempio) su 4 colonne totali 3 restino con il width messo in fase di progettazione e una si ridimensioni in modo da occupare tutto lo spazio rimanente nella listview! In sostanza non voglio ne avanzi ne abbondi ma una lista che si riempia del tutto senza MAI visualizzare scrolls orizzontali (che appaiono se non si ridimensionano le colonne quando ci sono le verticali).

    Non so...a me sembra funzioni...

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.