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) Next
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?
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.