Confrontare l'item di una combobox con un altro di un'altra combobox in VB
Salve, cercherò di spiegarvi il problema in cui mi sono imbattuto non appena sono arrivato alla parte finale del programma che sto creando. Sto cercando di attuare l'algoritmo per il calcolo del codice fiscale in visual basic e sono arrivato
alla parte finale, ovvero quella del calcolo della lettera di controllo. Ciò che vorrei fare io è la seguente cosa, nel seguente codice:
Vorrei prendere ciascun elemento della combobox11 e confrontarlo con ogni elemento della combobox7, fino a quando non trovo il corrispondente. Una volta trovato il corrispondente, prendere l'index dell'elemento corrispondente. Il problema è: come faccio a fare questo confronto, per ciascun elemento?
alla parte finale, ovvero quella del calcolo della lettera di controllo. Ciò che vorrei fare io è la seguente cosa, nel seguente codice:
Dim alfabeto As String
Dim cifre_p As Integer
Dim cifre_d = New String() {1, 0, 5, 7, 9, 13, 15, 17, 19, 21, 2, 4, 18, 20, 11, 3, 6, 8, 12, 14, 16, 10, 22, 25, 24, 23}
alfabeto = ""
For Each c In "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray()
alfabeto = c
ComboBox7.Items.Add(alfabeto)
ComboBox9.Items.Add(alfabeto)
Next
For j As Integer = 0 To 25
cifre_p = j
ComboBox8.Items.Add(cifre_p)
Next
ComboBox10.Items.AddRange(cifre_d)
Dim div_string As String
Dim store_pari As String
Dim store_dispari As String
Dim index2 As String
div_string = Label10.Text
For k = 2 To div_string.Length Step +2
store_pari = Mid(div_string, k, 1)
ComboBox11.Items.Add(store_pari)
Next
For j = 1 To div_string.Length Step +2
store_dispari = Mid(div_string, j, 1)
ComboBox12.Items.Add(store_dispari)
NextVorrei prendere ciascun elemento della combobox11 e confrontarlo con ogni elemento della combobox7, fino a quando non trovo il corrispondente. Una volta trovato il corrispondente, prendere l'index dell'elemento corrispondente. Il problema è: come faccio a fare questo confronto, per ciascun elemento?
Risposte
"adrian.s2":
come faccio a fare questo confronto, per ciascun elemento?
Con due cicli for nidificati.
Ci avevo pensato pure io, e ci ho anche provato, però il risultato ottenuto non è quello che immaginavo. Non riesco a capire come impostare questi due cicli..
Questo codice è testato e funzionante.
Presuppone l'esistenza delle due ComboBox e di una TextBox per verificare il risultato.
Alla prima corrispondenza trovata, la ricerca viene interrotta e presentato il risultato.
Se non vengono trovate corrispondenze, gli indici vengono posti negativi per segnalare la condizione.
Presuppone l'esistenza delle due ComboBox e di una TextBox per verificare il risultato.
Alla prima corrispondenza trovata, la ricerca viene interrotta e presentato il risultato.
Se non vengono trovate corrispondenze, gli indici vengono posti negativi per segnalare la condizione.
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim i, j As Integer
CheckCombo(i, j)
TextBox1.Text = i & ", " & j
End Sub
Private Sub CheckCombo(ByRef i As Integer, ByRef j As Integer)
For i = 0 To ComboBox1.Items.Count - 1
For j = 0 To ComboBox2.Items.Count - 1
If ComboBox1.Items(i) = ComboBox2.Items(j) Then
Exit Sub
End If
Next
Next
i = -1
j = -1
End Sub
End Class
Ma in questo caso, tu hai detto che alla prima corrispondenza trovata, la ricerca viene interrotta. Questo vuol dire che non confronterà tutti gli elementi, o sbaglio?
In base al mio codice quindi, dovrei fare così:
non so se mi spiego bene riguardo a ciò che voglio fare, ma io devo confrontare ogni elemento della prima combobox con ogni elemento della seconda e poi prendere il relativo index del corrispondente trovato nella seconda. E' questo ciò che non riesco a fare..
Per esempio se il primo elemento della prima combobox è H, una volta trovata la H nella seconda combobox prendere il suo index, poi prendere il secondo elemento della prima, tipo D e una volta trovato il corrispondente prendere di nuovo l'index, e così via per tutti gli elementi, ma non riesco a capire come fare.
In base al mio codice quindi, dovrei fare così:
for b = 0 to combobox11.items.count -1
for a = 0 to combobox7.items.count -1
if(combobox11.items(b) = combobox7.items(a)) then
label.text = combobox7.selectedIndex
else
a = a +1
b = b +1
end if
next
next
non so se mi spiego bene riguardo a ciò che voglio fare, ma io devo confrontare ogni elemento della prima combobox con ogni elemento della seconda e poi prendere il relativo index del corrispondente trovato nella seconda. E' questo ciò che non riesco a fare..
Per esempio se il primo elemento della prima combobox è H, una volta trovata la H nella seconda combobox prendere il suo index, poi prendere il secondo elemento della prima, tipo D e una volta trovato il corrispondente prendere di nuovo l'index, e così via per tutti gli elementi, ma non riesco a capire come fare.
Non hai capito come funzionano le ComboBox: nel tuo codice fai riferimento alla proprietà .selectedIndex senza che la stessa sia alterata in alcun punto dalla sua condizione precedente all'esecuzione del frammento.
Il codice che hai scritto non può funzionare e non puoi capire le motivazioni se non conosci le classi che cerchi di adoperare.
Leggi il manuale.
Il codice che hai scritto non può funzionare e non puoi capire le motivazioni se non conosci le classi che cerchi di adoperare.
Leggi il manuale.