Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    31

    [vb.net] Problema proprietà ItemData ListBox

    Salve a tutti
    Il problema è questo : con vb6 posso popolare una ListBox con i campi Cognome e Nome dei dipendenti, mentre nella matrice della proprietà ItemData inserisco i codici dei dipendenti, in modo che i codici inseriti siano sincronizzati con l'elenco ordinato,(i campi cognome ,nome e codici dipendenti li prelevo da un database) es:
    Private Sub Form_Load ()
    ......
    SQL = "SELECT * FROM TabDipendente"
    rs = cn.Execute(SQL)
    rs.MoveFirst()

    Do While Not rs.EOF
    List1.AddItem rs!Cognome & " " & rs!Nome
    List1.ItemData(i) = rs!id
    i = i + 1
    rs.MoveNext()
    loop
    .....
    End Sub

    Private Sub List1_Click ()
    ' Aggiunge il codice e il nome del dipendente.

    Label1.Caption = List1.ItemData(List1.ListIndex) & " " & List1.List(List1.ListIndex)

    End Sub

    Con Vb.net visto che la proprietà ItemData non è più gestita come posso fare?Grazie

  2. #2
    Allora, iniziamo dal fatto che solo da circa 3 giorni sto studiando il vb.net.
    Però ho trovato la soluzione al problema della mancanza del itemdata.
    Dunque, una soluzione valida è la seguente:
    Si deve creare una classe personalizzata dove ad esempio puoi salvare nome, cognome e codice di una persona es:

    Public Class Persone
    Dim m_Nome as String
    Dim m_Cognome as String
    Dim m_Codice as Integer
    'Quì di seguito si imposteranno le procedure New nel caso non vengano passati parametri o se vengono passati dei parametri.
    Public Sub New()
    m_Nome=""
    m_Cognome=""
    m_Codice=0
    End Sub

    Public Sub New(ByVal Nome as String,ByVal Cognome as String,ByVal Codice as Integer)
    m_Nome=Nome
    m_Cognome=Cognome
    m_Codice=Codice
    End Sub

    'Ora definiamo le proprietà

    Public Property Nome() as String
    Get
    Return m_Nome
    End Get

    Set(ByVal Valore as String)
    m_Nome=Valore
    End Set
    End Property

    Public Property Cognome() as String
    Get
    Return m_Cognome
    End Get

    Set(ByVal Valore as String)
    m_Cognome=Valore
    End Set
    End Property

    Public Property Codice() as Integer
    Get
    Return m_Codice
    End Get

    Set(ByVal Valore as Integer)
    m_Codice=Valore
    End Set
    End Property

    'Adesso c'è l'ultimo passaggio, il più importante secondo me, bisogna sovrascrivere il ToString della ListBox/ComboBox.
    'Ovvero, questi controlli come elementi di una lista non accettano più delle stringhe ma dei veri e propri oggetti, solo che per visualizzarne il contenuto sulla lista lo trasformano automaticamente in stringa applicando il ToString.
    'Sapendo che questi controlli richiamano automaticamente il ToString noi creiamo un metodo tostring in overrides nella nostra classe, il quale una volta chiamato restituisce quello che noi vogliamo.

    Public Overrides Function ToString() as String
    Return m_Nome+" "+m_Cognome
    End Function

    End Class


    Creata questa classe e messa un pò dove ti pare basterà ad esempio aggiungere un elemento a una combobox in questo modo:

    ComboBox1.Items.Add(New Persone("Nome","Cognome",666))

    Nella lista appariranno il nome e cognome della persona (come da ToString) ma puoi ricavarti il codice come più ti aggrada, ad esempio, in un qualsiasi evento:

    Dim Codice as Integer

    Codice=CType(ComboBox1.SelectedItem,Persone).Codic e

    Oppure, puoi anche non usare il CType che tanto funziona lo stesso

    Codice=ComboBox1.SelectedItem.Codice

    Il CType è raccomandato ma in questo caso funge lo stesso.


    Spero che sia esauriente come spiegazione, 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.