Aggiornamento automatico valori textbox da selezione di due combobox

di il
2 risposte

Aggiornamento automatico valori textbox da selezione di due combobox

Salva a tutti, mi sono appena iscritto.

Mi sto avvicinando alla programazione in vb.net (provengo da vba di excel). Sto sviluppando dei piccoli software di calcolo.

Ho il seguente problema:

ho realizzato un form principale e dei sottoform di richiamo per specificare determinate caratteristiche.

In un Form ho definito due combobox che ho compilato al seguente modo:

Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load

Me.ComboBox1.Items.Add("Muratura in pietrame disordinata (ciottoli, pietre erratiche e irregolari)")
Me.ComboBox1.Items.Add("Muratura a conci sbozzati, con paramento di limitato spessore e nucleo interno")
Me.ComboBox1.Items.Add("Muratura in pietre a spacco con buona tessitura")
Me.ComboBox1.Items.Add("Muratura a conci di pietra tenera (tufo, calcarenite, ecc.)")
Me.ComboBox1.Items.Add("Muratura a blocchi lapidei squadrati")
Me.ComboBox1.Items.Add("Muratura in mattoni pieni e malta di calce")
Me.ComboBox1.Items.Add("Muratura in mattoni semipieni con malta cementizia (es. doppio UNI foratura < 40%)")
Me.ComboBox1.Items.Add("Muratura in blocchi laterizi semipieni, (perc. foratura < 45%)")
Me.ComboBox1.Items.Add("Muratura in blocchi laterizi semipieni, con giunti verticali a secco (perc. foratura < 45%)")
Me.ComboBox1.Items.Add("Muratura in blocchi di calcestruzzo o argilla espansa (perc. foratura tra 45% e 65%)")
Me.ComboBox1.Items.Add("Muratura in blocchi di calcestruzzo semipieni (foratura < 45%)")

Me.ComboBox2.Items.Add("Livello di Conoscenza Limitato LC1")
Me.ComboBox2.Items.Add("Livello di Conoscenza Adeguato LC2")
Me.ComboBox2.Items.Add("Livello di Conoscenza Accurato LC3")

End Sub

Sempre all'interno dello stesso form ho creato delle text box da compilare in base alla selezione delle due combobox.

Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged

If ComboBox1.SelectedIndex = 0 Then
TextBox2.Text = Format(100, "0.00")
TextBox8.Text = Format(180, "0.00")
TextBox10.Text = Format(2.0, "0.00")
TextBox9.Text = Format(3.2, "0.00")
TextBox12.Text = Format(690, "0.00")
TextBox11.Text = Format(1050, "0.00")
TextBox14.Text = Format(230, "0.00")
TextBox13.Text = Format(350, "0.00")
TextBox16.Text = Format(19, "0.00")

ElseIf ComboBox1.SelectedIndex = 1 Then
TextBox2.Text = Format(200, "0.00")
TextBox8.Text = Format(300, "0.00")
TextBox10.Text = Format(3.5, "0.00")
TextBox9.Text = Format(5.1, "0.00")
TextBox12.Text = Format(1020, "0.00")
TextBox11.Text = Format(1440, "0.00")
TextBox14.Text = Format(340, "0.00")
TextBox13.Text = Format(480, "0.00")
TextBox16.Text = Format(20, "0.00")

ElseIf ComboBox1.SelectedIndex = 2 Then
TextBox2.Text = Format(260, "0.00")
TextBox8.Text = Format(380, "0.00")
TextBox10.Text = Format(5.6, "0.00")
TextBox9.Text = Format(7.4, "0.00")
TextBox12.Text = Format(1500, "0.00")
TextBox11.Text = Format(1980, "0.00")
TextBox14.Text = Format(500, "0.00")
TextBox13.Text = Format(660, "0.00")
TextBox16.Text = Format(21, "0.00")

ElseIf ComboBox1.SelectedIndex = 3 Then
TextBox2.Text = Format(140, "0.00")
TextBox8.Text = Format(240, "0.00")
TextBox10.Text = Format(2.8, "0.00")
TextBox9.Text = Format(4.2, "0.00")
TextBox12.Text = Format(900, "0.00")
TextBox11.Text = Format(1260, "0.00")
TextBox14.Text = Format(300, "0.00")
TextBox13.Text = Format(420, "0.00")
TextBox16.Text = Format(16, "0.00")

ElseIf ComboBox1.SelectedIndex = 4 Then
TextBox2.Text = Format(600, "0.00")
TextBox8.Text = Format(800, "0.00")
TextBox10.Text = Format(9.0, "0.00")
TextBox9.Text = Format(12.0, "0.00")
TextBox12.Text = Format(2400, "0.00")
TextBox11.Text = Format(3200, "0.00")
TextBox14.Text = Format(780, "0.00")
TextBox13.Text = Format(940, "0.00")
TextBox16.Text = Format(22, "0.00")

ElseIf ComboBox1.SelectedIndex = 5 Then
TextBox2.Text = Format(240, "0.00")
TextBox8.Text = Format(400, "0.00")
TextBox10.Text = Format(6.0, "0.00")
TextBox9.Text = Format(9.2, "0.00")
TextBox12.Text = Format(1200, "0.00")
TextBox11.Text = Format(1800, "0.00")
TextBox14.Text = Format(400, "0.00")
TextBox13.Text = Format(600, "0.00")
TextBox16.Text = Format(18, "0.00")

ElseIf ComboBox1.SelectedIndex = 6 Then
TextBox2.Text = Format(500, "0.00")
TextBox8.Text = Format(800, "0.00")
TextBox10.Text = Format(24, "0.00")
TextBox9.Text = Format(32, "0.00")
TextBox12.Text = Format(3500, "0.00")
TextBox11.Text = Format(5600, "0.00")
TextBox14.Text = Format(875, "0.00")
TextBox13.Text = Format(1400, "0.00")
TextBox16.Text = Format(15, "0.00")

ElseIf ComboBox1.SelectedIndex = 7 Then
TextBox2.Text = Format(400, "0.00")
TextBox8.Text = Format(600, "0.00")
TextBox10.Text = Format(30, "0.00")
TextBox9.Text = Format(40, "0.00")
TextBox12.Text = Format(3600, "0.00")
TextBox11.Text = Format(5400, "0.00")
TextBox14.Text = Format(1080, "0.00")
TextBox13.Text = Format(1620, "0.00")
TextBox16.Text = Format(12, "0.00")

ElseIf ComboBox1.SelectedIndex = 8 Then
TextBox2.Text = Format(300, "0.00")
TextBox8.Text = Format(400, "0.00")
TextBox10.Text = Format(10, "0.00")
TextBox9.Text = Format(13, "0.00")
TextBox12.Text = Format(2700, "0.00")
TextBox11.Text = Format(3600, "0.00")
TextBox14.Text = Format(810, "0.00")
TextBox13.Text = Format(1080, "0.00")
TextBox16.Text = Format(11, "0.00")

ElseIf ComboBox1.SelectedIndex = 9 Then
TextBox2.Text = Format(150, "0.00")
TextBox8.Text = Format(200, "0.00")
TextBox10.Text = Format(9.5, "0.00")
TextBox9.Text = Format(12.5, "0.00")
TextBox12.Text = Format(1200, "0.00")
TextBox11.Text = Format(1600, "0.00")
TextBox14.Text = Format(300, "0.00")
TextBox13.Text = Format(400, "0.00")
TextBox16.Text = Format(12, "0.00")

ElseIf ComboBox1.SelectedIndex = 10 Then
TextBox2.Text = Format(300, "0.00")
TextBox8.Text = Format(440, "0.00")
TextBox10.Text = Format(18, "0.00")
TextBox9.Text = Format(24, "0.00")
TextBox12.Text = Format(2400, "0.00")
TextBox11.Text = Format(3520, "0.00")
TextBox14.Text = Format(600, "0.00")
TextBox13.Text = Format(880, "0.00")
TextBox16.Text = Format(14, "0.00")
End If

End Sub

Private Sub ComboBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox2.SelectedIndexChanged

If ComboBox2.SelectedIndex = 0 Then
TextBox3.Text = TextBox2.Text
TextBox3.Enabled = False
TextBox4.Text = TextBox10.Text
TextBox4.Enabled = False
TextBox5.Text = (Val(TextBox12.Text) + Val(TextBox11.Text)) / 2
TextBox5.Enabled = False
TextBox6.Text = (Val(TextBox14.Text) + Val(TextBox13.Text)) / 2
TextBox6.Enabled = False
TextBox7.Text = TextBox16.Text
TextBox7.Enabled = False
ElseIf ComboBox2.SelectedIndex = 1 Then
TextBox3.Text = (Val(TextBox2.Text) + Val(TextBox8.Text)) / 2
TextBox3.Enabled = False
TextBox4.Text = (Val(TextBox10.Text) + Val(TextBox9.Text)) / 2
TextBox4.Enabled = False
TextBox5.Text = (Val(TextBox12.Text) + Val(TextBox11.Text)) / 2
TextBox5.Enabled = False
TextBox6.Text = (Val(TextBox14.Text) + Val(TextBox13.Text)) / 2
TextBox6.Enabled = False
TextBox7.Text = TextBox16.Text
TextBox7.Enabled = False
Else ComboBox2.SelectedIndex = 2
MsgBox("Inserisci valori derivanti dalle prove sperimentali")
TextBox3.Enabled = True
TextBox4.Enabled = True
TextBox5.Enabled = True
TextBox6.Enabled = True
TextBox7.Enabled = True
End If

End Sub

Quando seleziono un item della prima combobox e poi un item della seconda combobox, i valori nelle textbox che visualizzo sono corretti.
Il problema mi si pone, quando, lasciando fissa la selezione della seconda combo box e cambiando la selezione delle prima combobox, i valori delle textbox non cambiano automaticamente (devo ricliccare sull'item della seconda combobox).

Sapete come posso fare per poter far aggiornare automaticamente i valori delle textbox? Devo ciclare le combobox o sare un evento text change?

Vi ringrazio anticipatamente

2 Risposte

  • Re: Aggiornamento automatico valori textbox da selezione di due combobox

    Se può aiutare, ho risolto in questo modo, facendo un ciclo for e doppio ciclo if nell'evento combobox1_SelectIndexChanged,:

    For i As Integer = 0 To ComboBox1.Items.Count - 1
    If ComboBox1.Text = ComboBox1.Items(i) Then
    If ComboBox2.SelectedIndex = 0 Then
    TextBox3.Text = TextBox2.Text
    TextBox3.Enabled = False
    TextBox4.Text = TextBox10.Text
    TextBox4.Enabled = False
    TextBox5.Text = (Val(TextBox12.Text) + Val(TextBox11.Text)) / 2
    TextBox5.Enabled = False
    TextBox6.Text = (Val(TextBox14.Text) + Val(TextBox13.Text)) / 2
    TextBox6.Enabled = False
    TextBox7.Text = TextBox16.Text
    TextBox7.Enabled = False
    ElseIf ComboBox2.SelectedIndex = 1 Then
    TextBox3.Text = (Val(TextBox2.Text) + Val(TextBox8.Text)) / 2
    TextBox3.Enabled = False
    TextBox4.Text = (Val(TextBox10.Text) + Val(TextBox9.Text)) / 2
    TextBox4.Enabled = False
    TextBox5.Text = (Val(TextBox12.Text) + Val(TextBox11.Text)) / 2
    TextBox5.Enabled = False
    TextBox6.Text = (Val(TextBox14.Text) + Val(TextBox13.Text)) / 2
    TextBox6.Enabled = False
    TextBox7.Text = TextBox16.Text
    TextBox7.Enabled = False
    ElseIf ComboBox2.SelectedIndex = 2 Then
    MsgBox("Inserisci valori derivanti dalle prove sperimentali")
    TextBox3.Enabled = True
    TextBox4.Enabled = True
    TextBox5.Enabled = True
    TextBox6.Enabled = True
    TextBox7.Enabled = True
    Exit For
    End If
  • Re: Aggiornamento automatico valori textbox da selezione di due combobox

    Ciao,
    Mi permetto di darti un piccolo suggerimento, se ti è possibile evita di lasciare i nomi degli oggetti al valore di default ... Oggi che scrivi il tuo programma è semplice, ma se lo dovrai modificare fra 5 mesi perderai un sacco di tempo a recuperare le informazioni per capire ad esempio cosa rappresenta la TextBox5 (lo stesso per i nomi delle form e di qualsiasi altro controllo).
    Ho letto che hai risolto, mi chiedevo però se nella situazione che descrivevi nessuna textbox si aggiornasse oppure alcune si ed altre no ? Perchè leggendo il frammento di codice che riportavi sembrerebbe la seconda delle due.

    Grazie e ciao
Devi accedere o registrarti per scrivere nel forum
2 risposte