Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    31

    come simulare l'evento column click

    buon giorno a tutti, ho cercato nel forum fra le varie discussioni, ma non ho trovato nulla che si avvicinasse al mio problema.

    Lavoro su piattaforma visual studio 2010, in una finestra ho una Listview, chiamiamola lst.

    Ormai in automatico copio ed incollo questi metodi che fan si, cliccando sull'header della colonna prescelta, mi ordinano la lista.

    codice:
     Class ListViewItemComparer
    
            Implements IComparer
            Private col As Integer
    
            Public Sub New()
                col = 0
            End Sub
    
            Public Sub New(ByVal column As Integer)
                col = column
            End Sub
    
            Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer _
               Implements IComparer.Compare
                Return [String].Compare(CType(x, ListViewItem).SubItems(col).Text, CType(y, ListViewItem).SubItems(col).Text)
            End Function
    
        End Class
    
        Private Sub lst_ColumnClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles lst.ColumnClick
            Dim list As New ListView
            list = sender
            list.ListViewItemSorter = New ListViewItemComparer(e.Column)
            list.Sort()
        End Sub
    Il mio problema è che voglio che sia un tasto a richiamare il metodo (lst.columnclick)
    che mi ordini la lista, ma sbaglio qualcosa negli argomenti da inserire, cioè:

    codice:
     Private Sub btnord_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnord.Click
    lst.columnclick( . . . , . . . )
        End Sub
    le ho provate tutte, ma non capisco. C'è qualcuno che mi può aiutare?
    Grazie a tutti anticipatamente

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Questa non è la sezione per VB.NET e il codice devi inserirlo tra tag CODE altrimenti è poco leggibile ...

    In ogni caso, per il problema, l'evento ColumnClick conosce la colonna su cui si è fatto il click e su quella opera ... tu come fai a scegliere la colonna da un tasto?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    31
    grazie del tuo interessamento, e scusami se ho sbagliato forum, ma ero convinto di averlo messo in 'Visual Basic e .Net Framework', ma qui non lo trovo.

    Comunque, appunto, io voglio specificare che l'ordinamento della lista debba essere fatto, per esempio cliccando l'header della colonna 2

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Intendevo dire, non ti basta qualcosa com

    codice:
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            ListView1.ListViewItemSorter = New ListViewItemComparer(1)
            ListView1.Sort()
        End Sub
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    31

    funziona

    Praticamente si . . . grazie, mi hai risolto il problema, ho inserito il codice che mi hai scritto, l'ho compilato e funziona, grazie ancora.
    certe volte quando mi fisso e penso che una cosa sia diffile, invece era più semplice di quanto pensassi.
    senza toglierti i meriti ovviamente!

    grazie forum di esistere e grazie oregon

  6. #6
    Utente di HTML.it L'avatar di Vinsent
    Registrato dal
    May 2011
    Messaggi
    314
    Come ho risposto su un' altro forum....c' è una conversione implicita tra oggetti qui:
    codice:
        Private Sub lst_ColumnClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles lst.ColumnClick
            Dim list As New ListView
            list = sender
            list.ListViewItemSorter = New ListViewItemComparer(e.Column)
            list.Sort()
        End Sub
    in "list = sender".
    Quindi, "conversione" ho dichiarare sender come ListView ed eliminare la variabile "list" utilizzando il parametro, non è necessario ma penso sia una buona regola evitare ciò.
    Mentre per richiamare la Sub basta passare parametri compatibili con quelli dichiarati, esempio:
    codice:
    lst_ColumnClick(lst, New ColumnClickEventArgs(1))
    Dove "1" è l' indice che identifica la colonna.
    Ciao!

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.