Confrontare l'item di una combobox con un altro di un'altra combobox in VB

adrian.ghinea00
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:
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
LucianoD1
"adrian.s2":
come faccio a fare questo confronto, per ciascun elemento?

Con due cicli for nidificati.

adrian.ghinea00
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..

LucianoD1
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.

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

adrian.ghinea00
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ì:
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.

LucianoD1
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.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.