PDA

View Full Version : [Visual Basic] Semplice problema con ComboBox


The Lord of Diplomacy
15-11-2008, 16:24
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.

© Rocky
16-11-2008, 04:16
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.

Con VB 6.0 io lo faccio senza la condizione IF-Then:


TxtVisualizza.Text = Combo1()


dovrebbe essere uguale anche con Visual Studio 2005

Ciao :D

MarcoGG
16-11-2008, 08:40
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.

Forse è questione di evento. Quello giusto è SelectedIndexChanged :

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

The Lord of Diplomacy
16-11-2008, 22:37
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.

© Rocky
17-11-2008, 03:06
:D Ho bisogno che per ogni campo selezionato venga mostrato nella TextBox un testo mio, non la copia di quello selezionato nella ComboBox.
Grazie ancora per l'aiuto.

Scusa ma, non avevo capito bene l'intenzione. :doh:

Ci sono vari modi,
se non ci sono lunghe liste uno potrebbe essere questo:


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


Ciao :D

© Rocky
17-11-2008, 03:08
Eliminato doppione

© Rocky
17-11-2008, 03:08
Eliminato doppione

© Rocky
17-11-2008, 03:09
Eliminato doppione

MarcoGG
17-11-2008, 10:02
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.

Allora hai delle coppie valore-testo correlate.
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 :
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

Popolo la Combo, specificando cosa mostrare all'utente e cosa usare come valore ritornato dalla selezione :
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"

E il gioco è fatto ! :cool:
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

TextBox1.Text = ComboBox1.SelectedValue.ToString

End Sub

The Lord of Diplomacy
17-11-2008, 19:00
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

MarcoGG
17-11-2008, 21:57
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.


1) Non mi torna. Devi aver modificato qualcosa nel mio codice. Nel mio esempio se seleziono "4" sulla Combo ottengo nella Text "Testo_4", ecc...
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"... :mbe:
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.

© Rocky
18-11-2008, 22:19
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:


Avrei interesse a conoscere i due errori da te riscontrati.

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 :D