|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Jan 2007
Messaggi: 24
|
[Visual Basic] Semplice problema con ComboBox
Salve, sono 3 ore che ci sto sbattendo la testa ma non ho ancora capito come risolvere il seguente problema:
Ho una combobx ed una textbox. If seleziono 'campo x' nella combobox Then mostri nella textbox 'mio testo'. Tutto qui. Compilo con Visual Studio 2005. Grazie mille. |
|
|
|
|
|
#2 | |
|
Member
Iscritto dal: Feb 2006
Città: Mi sono perso nello spazio...
Messaggi: 119
|
Quote:
Codice:
TxtVisualizza.Text = Combo1() Ciao
__________________
Il miglior dialogo è l'intesa Ultima modifica di © Rocky : 16-11-2008 alle 05:20. |
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Codice:
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
If ComboBox1.Text = "" Then Exit Sub
TextBox1.Text = ComboBox1.Text
End Sub
|
|
|
|
|
|
|
#4 |
|
Junior Member
Iscritto dal: Jan 2007
Messaggi: 24
|
Grazie ad entrambi.
Il codice di MarcoGG funziona bene, però non è esattamente quello che chiedevo. Ho bisogno che per ogni campo selezionato venga mostrato nella TextBox un testo mio, non la copia di quello selezionato nella ComboBox. Pertanto credo che bisogni trovare un modo per identificare ogni campo della ComboBox e quindi creare una relazione con la TextBox. Grazie ancora per l'aiuto. |
|
|
|
|
|
#5 | |
|
Member
Iscritto dal: Feb 2006
Città: Mi sono perso nello spazio...
Messaggi: 119
|
Quote:
Ci sono vari modi, se non ci sono lunghe liste uno potrebbe essere questo: Codice:
With Combo1 .AddItem "1" .AddItem "2" .AddItem "3" End With ' Posizione = Combo1.ListIndex Select Case Posizione Case Is = 1 Text1.Text = "Rocky" Case Is = 2 Text1.Text = "Balboa" Case Is = 3 Text1.Text = "Etc. etc." Case Else End Select
__________________
Il miglior dialogo è l'intesa |
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Feb 2006
Città: Mi sono perso nello spazio...
Messaggi: 119
|
Eliminato doppione
__________________
Il miglior dialogo è l'intesa |
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Feb 2006
Città: Mi sono perso nello spazio...
Messaggi: 119
|
Eliminato doppione
__________________
Il miglior dialogo è l'intesa |
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Feb 2006
Città: Mi sono perso nello spazio...
Messaggi: 119
|
Eliminato doppione
__________________
Il miglior dialogo è l'intesa |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Io ti consiglio un approccio più "OOP". Il ComboBox può gestire liste di oggetti, oltre che le banali liste di stringhe o numeri. In poche parole bisogna creare una Structure ( o una classe, o qualsiasi cosa esponga proprietà, insomma ). Ogni oggetto viene inserito in un array e l'array bindato direttamente alla ComboBox Faccio un esempio che puoi riadattare : La Structure : Codice:
Private Structure comboItem
Private m_valore As Integer
Private m_testo As String
Public Property valore()
Get
Return m_valore
End Get
Set(ByVal value)
m_valore = value
End Set
End Property
Public Property testo()
Get
Return m_testo
End Get
Set(ByVal value)
m_testo = value
End Set
End Property
End Structure
Codice:
Dim arrayItems() As comboItem
Dim i As Integer = 0
For i = 0 To 9
Dim CI As New comboItem
CI.valore = i
CI.testo = "Testo_" & i
ReDim Preserve arrayItems(i)
arrayItems(i) = CI
Next i
ComboBox1.DataSource = arrayItems
ComboBox1.ValueMember = "testo"
ComboBox1.DisplayMember = "valore"
Codice:
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
TextBox1.Text = ComboBox1.SelectedValue.ToString
End Sub
|
|
|
|
|
|
|
#10 |
|
Junior Member
Iscritto dal: Jan 2007
Messaggi: 24
|
Grazie ancora ad entrambi! Anche stavolta il codice di MarcoGG si è rivelato perfettamente funzionante (quello di © Rocky non sono riuscito ad utilizzarlo), ho trovato tuttavia due errori ai quali non ho saputo rimediare:
1) una volta fatta la prima scelta nella ComboBox, nella TextBox viene correttamente visualizzato il relativo testo, ma è sempre relativo al campo "0", quindi il testo mostrato è sempre "Testo_0", qualunque scelta io faccia. 2) Una volta effettuata la prima scelta nella ComboBox vengono caricati tutti i valori dell'array. Non mi trovo più "Item 1", "Item 2", "Item 3" inseriti da me bensì "0", "1", "2", "3"... fino a 9. Un'altra nota che volevo fare è ad ogni campo della ComboBox selezionato deve corrispondere nella TextBox un testo unico, senza nulla in comune con gli altri. Faccio un esempio: selezione nella ComboBox "pippo" e nella TextBox devo avrere "paperina". Seleziono nella ComboBox "topolina" e nella TextBox devo avere "pluto". Grazie ancora per il vostro prezioso aiuto, purtroppo sono alle prime armi! :P |
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Se la Combo è di sola scelta ( l'utente non deve poter "scrivere" nella Combo ) la proprietà DropDownStyle va messa su DropDownList. 2) Questo non è corretto. L'array va bindato ( associato ) UNA VOLTA SOLA nel Load del Form interessato, oppure sul Click di un Button, o che so io, ma NON "una volta effettuata la prima scelta"... Se avevi precedentemente inserito alcuni Items, l'unica è trasformarli in Structure compatibili con le altre... Non so se mi spiego, insomma : non puoi mettere mele, cani e gatti nello stesso elenco. Nel momento in cui bindi il Combo sull'array gli items eventualmente già presenti vengono persi. |
|
|
|
|
|
|
#12 | |
|
Member
Iscritto dal: Feb 2006
Città: Mi sono perso nello spazio...
Messaggi: 119
|
Quote:
Ovviamente il codice di Marco è il top, il mio pur essendo molto semplificato funzionare lo stesso, se invece di inserire i numeri nella Combo1 1,2,3 ecc, inserisci Pippo, Pluto, Topolino, selezionando Pippo, puoi evidenziare Clarabella, basta digitare la coppia di elementi a cui vuoi fare riferimento. La semplificazione è voluta, chiaramente ho omesso le dichiarazioni ed i fronzoli e mi sono attenuto allo stretto necessario convinto che si capisse tale omissione. Ciao
__________________
Il miglior dialogo è l'intesa |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:23.




















