Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    37

    [VB2010 WinForm]Personalizzare listview

    Salve a tutti!!
    Innanzitutto colgo l'occasione per salutare tutto il forum, mi sono appena iscritto, anche se il forum in lettura lo seguo da parecchio, insomma è molto utile e spazia un po' in tutti i cambi per questo ottima fonte di guide e altro.
    Fatta la sviolinata :P anche se lo penso perché ho sempre usato molte informazioni da html.it, passiamo al quesito.
    Spero di aver postato con tag giusti e nell'apposita sezione, altrimenti mi scuso e nei prossimi starò più attento.

    Quello che volevo chiedere è, sto creando un programma in vb .net e mi sono bloccato davanti alla personalizzazione del layout di una listview.
    Praticamente avevo necessita di un qualcosa come una listbox, però con le righe colorate singolarmente in modo definito. Da qui l'idea di fare una listview, e fin qui tutto bene, se non fosse che le righe in questione vengono scritte ma restano limitate all'interno di una colonna (io non ne ho create in realtà) e non trovo il modo di far visualizzare tutto il testo all'interno degli item, e nel caso non ci stiano nella listview attivare lo scroll orizzontale.
    E' così assurdo?
    Come posso fare?

    Poi altra curiosità, navigando per trovare una soluzione mi son imbattuto qui:
    http://stackoverflow.com/questions/4...tile-width-100

    e mi chiedevo come ha fatto a visualizzare una listview così accattivante? Ha inserito dei button all'interno? o cosa sono quelli?
    Nella mia ci son misere righe effetto label anche un po' tristi

    Qualche dritta per questi 2 quesiti?

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    40

    Re: [VB2010 WinForm]Personalizzare listview

    Originariamente inviato da inconsapevole
    Salve a tutti!!
    Innanzitutto colgo l'occasione per salutare tutto il forum, mi sono appena iscritto, anche se il forum in lettura lo seguo da parecchio, insomma è molto utile e spazia un po' in tutti i cambi per questo ottima fonte di guide e altro.
    Fatta la sviolinata :P anche se lo penso perché ho sempre usato molte informazioni da html.it, passiamo al quesito.
    Spero di aver postato con tag giusti e nell'apposita sezione, altrimenti mi scuso e nei prossimi starò più attento.

    Quello che volevo chiedere è, sto creando un programma in vb .net e mi sono bloccato davanti alla personalizzazione del layout di una listview.
    Praticamente avevo necessita di un qualcosa come una listbox, però con le righe colorate singolarmente in modo definito. Da qui l'idea di fare una listview, e fin qui tutto bene, se non fosse che le righe in questione vengono scritte ma restano limitate all'interno di una colonna (io non ne ho create in realtà) e non trovo il modo di far visualizzare tutto il testo all'interno degli item, e nel caso non ci stiano nella listview attivare lo scroll orizzontale.
    E' così assurdo?
    Come posso fare?

    Poi altra curiosità, navigando per trovare una soluzione mi son imbattuto qui:
    http://stackoverflow.com/questions/4...tile-width-100

    e mi chiedevo come ha fatto a visualizzare una listview così accattivante? Ha inserito dei button all'interno? o cosa sono quelli?
    Nella mia ci son misere righe effetto label anche un po' tristi

    Qualche dritta per questi 2 quesiti?
    Spiega meglio che effetto vuoi alla tua ListView.
    Ecco un esempio che ho fatto ora:

  3. #3
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    @vabatta

    Interessante: immagino che tu abbia usato la proprietà Groups della ListView per le "righe blu", ma per i CheckBox come hai fatto?

    @inconsapevole

    Se ho capito bene quello che vuoi fare, puoi come è spiegato in questo articolo (primo risultato ricerca su google). La ListView, con modalità di visualizzazione "Details" viene usata (di solito) con più colonne. Si può anche usarne una sola e, in base al testo che deve contenere, allunghi la colonna(anche a runtime) tanto quanto serve per il testo. Poi, con la proprietà MyListView.Items(Index).BackGroundColor, puoi settare il colore di sfondo di ogni riga.

    Buon Lavoro

    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    40
    Originariamente inviato da ShaleN
    @vabatta

    Interessante: immagino che tu abbia usato la proprietà Groups della ListView per le "righe blu", ma per i CheckBox come hai fatto?

    Buon Lavoro

    Sì, per le "righe blu" ho usato la proprietà "Group", mentre per i Check Boxes, c'è la proprietà apposta (come puoi notare nell'immagine, è pure selezionata nelle proprietà in basso a destra )

  5. #5
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Originariamente inviato da vabatta
    ... mentre per i Check Boxes, c'è la proprietà apposta ...
    Giusto, non mi ricordavo. Grazie

    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    37
    @ShaleN
    Quel risultato spiega come personalizzare una listbox usando il modo ownerdraw.
    Io invece ho una listview al momento.
    Per le righe colorate ho già risolto anche io usando i gruppi.

    @Vabatta
    Il risultato che voglio ottenere è tipo questo:
    http://i.stack.imgur.com/i49en.png

    Prendi di base la seconda immagine, e vorrei che a differenza di quella non avesse i grouppi visualizzati, cosa che nella mia ho già fatto, e che abbia le voci in quel modo, tipo pulsanti.
    Poi che abbia la scroll bar orizzontale per visualizzare il testo troppo lungo, e che abbia come nell'immagine una sola colonna larga quanto il testo, in modo che lo lasci visualizzare tutto. (mentre nella mia la colonna rimane stretta e mi tronca il testo).

    Spero di esser stato più chiaro

  7. #7
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Per non visualizzare i gruppi, vedi la proprietà ShowGroups della ListView.
    Per non troncare il testo devi fare così (credo, non l'ho mai fatto):
    codice:
    MyListView.Columns(0).AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent)
    Così, la colonna dovrebbe adattarsi automaticamente al contenuto.
    La scrollbar orizzontale dovrebbe apparire automaticamente nel caso il testo sia troppo lungo (se il punto prima funziona), per la visualizzazione "a bottoni" non so come fare, ma penso che sia un controllo personalizzato, magari fatto con WPF.

    A sto punto, tanto vale che ti scrivi un controllo personalizzato.

    Buon lavoro.

    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    37
    Eh quel metodo lo avevo provato, ma sembra non funzionare, non adatta un bel niente, ci riprovo, magari sbaglio qualcosa.

    Poi per creare controlli personalizzati con WPF c'è una qualche guida che posso leggermi?
    Non ne ho mai creato quindi mi farebbe piacere istruirmi in tal senso, se non per questa volta per le prossime

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    37
    No confermo, sembra non funzionare!

    Ho aggiunto
    [ CODE]dim colonna as new columnsheader[/CODE]

    Al load del form contenente la listview1 ho messo:
    codice:
    listview1.columns.add (colonna)
     colonna.text ="Colonna 1"
     index = colonna.index listview1.columns(index).AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent)
    Ma niente quando carico il form e quindi la listview e poi aggiungo un qualche item:
    listview1.items.add ("qualcosa lungoooooo")
    Non va, mi tronca sempre la riga e niente scroll bar

  10. #10
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Ecco un metodo più "brutale":
    codice:
    Dim colonna As New Windows.Forms.ColumnHeader
    ListView1.Columns.Add(colonna)
    colonna.text = "Colonna 1"
    Dim index As Integer = colonna.Index
    ListView1.Columns(index).Width = Graphics.FromHwnd(Me.Handle).MeasureString(TextBox1.Text, ListView1.Font).Width
    ListView1.Items.Add(TextBox1.Text)
    Ora c'è sia colonna allungata che scrollbar.
    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

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.