PDA

View Full Version : VB.NET ComboBox (Valore + Label)


race2
01-06-2006, 11:36
Con VB.NET 2005 dovrei usare lo strumento ComboBox in maniera che al Popolamento posso assegnare un Valore + una Label, e quindi successivamente alla Selezione di un Item possa estrarre o il Valore o la Label,

ho provato a estendere la Classe ComboBox ma non ci sono riuscito....

cosa mi consigliate di fare ???

0rph3n
01-06-2006, 12:27
Tempo fa era servita una cosa del genere anche a me!
Avevo risolto creando un oggetto (comboBoxItem :fagiano: ) che non aveva niente di diverso dai soliti se non l'override della funzione ToString() dalla quale mi facevo restiltuire la variabile che volevo venisse visualizzata nel ComboBox (questo perchè il ComboBox come anche la ListBox chiamano il metodo ToString() per sapere il testo che devono visualizzare).
Quando dovevo aggiungere un elemento ad un ComboBox non facevo altro che fare:
Dim oggettoDaInserire As comboBoxItem = New comboBoxItem
oggettoDaInserire.Nome = ValoreNome
oggettoDaInserire.Tag = ValoreTag
ComboBox.Items.Add(oggettoDaInserire)
Mentre per recuperare un'oggetto, ad esempio quello selezionato:
Dim oggettoRecuperato As comboBoxItem = ComboBox.SelectedItem
Spero di esserti stato d'aiuto!

'iao

race2
01-06-2006, 14:05
Veramente comodo il tuo metodo, nel frattempo ho fatto questo:


Public Class ExtendComboBox

Private m_value As Integer
Private m_label As String

Public ReadOnly Property Value() As Integer
Get
Return m_value
End Get
End Property

Public ReadOnly Property Label() As String
Get
Return m_label
End Get
End Property

Public Sub New(ByVal Value As Integer, ByVal Label As String)
m_value = Value
m_label = Label
End Sub

Public Overrides Function ToString() As String
Return m_label
End Function

End Class


per popolare la ComboBox:


cmbAgenti.Items.Add(New ExtendComboBox(-valore-, -label-))


per raccogliere il valore selezionato:


Dim ageItem As ExtendComboBox = DirectCast(cmbAgenti.SelectedItem, ExtendComboBox)
ageItem.Value ' per il Valore
ageItem.Label ' per la Label


ti sembra troppo tutto questo ??? :rolleyes: