Aggiornare una Combobox quando cambia il valore di un’altra in C#

Aggiornare una Combobox quando cambia il valore di un'altra in C#

Aggiornare una Combobox quando cambia il valore di un’altra in C#: Come modificare il contenuto di una combobox quando si cambia il valore selezionato di un’altra combobox.

Proporre ai propri utenti dei contenuti dinamici può essere un punto di forza per i propri software, ed aggiornare il contenuto di una combobox via codice, è uno dei metodi più utili per farlo.

In questo tutorial utilizziamo 2 combobox, una che permette di scegliere tra:

  • Giorni della settimana
  • Mesi

E la seconda che in base alla scelta della prima mostrerà l’elenco dei giorni della settimana o i mesi.

Il codice da scrivere si divide in 3 parti:

  • Preparazione dell’elenco dei valori da caricare nella 2 combobox
  • Verifica del valore selezionato nella prima combobox
  • Caricamento dei dati nella seconda combobox

Aggiornare una Combobox quando cambia il valore di un’altra in C#

Iniziamo preparando gli array da utilizzare:

//GIORNI SETTIMANA
        string[] ArrayGiorniSettimana = {"Lunedi", "Martedi", "Mercoledi", "Giovedi", "Venerdi", "Sabato", "Domenica" };
//MESI
        string[] ArrayMesi = {"Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre",
                            "Dicembre"};

Ora con i due array pronti, passiamo alla verifica dell’evento della prima combobox.

Infatti dobbiamo controllare quando cambia l’indice selezionato della prima combobox e di conseguenza caricare i dati associati.

Per farlo quindi aggiungiamo l’evento SelectedIndexChanged della prima combobox, scrivendo:

private void comboPrincipale_SelectedIndexChanged(object sender, EventArgs e)
        {
            /*
            INDICI
            0 = GIORNI DELLA SETTIMANA
            1 = MESI
            */
            comboSecondaria.Items.Clear();
            switch (comboPrincipale.SelectedIndex)
            {
                case 0:
                    for (int a = 0; a < ArrayGiorniSettimana.Length; a++)
                    {
                        comboSecondaria.Items.Add(ArrayGiorniSettimana[a]);
                        comboSecondaria.SelectedIndex = 0;
                    }
                    break;
                case 1:
                    for (int a = 0; a < ArrayMesi.Length; a++)
                    {
                        comboSecondaria.Items.Add(ArrayMesi[a]);
                        comboSecondaria.SelectedIndex = 0;
                    }
                    break;
                default:
                    comboSecondaria.Items.Add("Nessun elemento valido selezionato");
                    break;
            }
        }

La Switch permette di controllare quale indice è stato selezionato, e al cambio di indice, andiamo a caricare i dati degli array nella seconda combobox.

CODICE COMPLETO

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Esempio_ListBox
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            comboPrincipale.SelectedIndex = 0;
        }
        //GIORNI SETTIMANA
        string[] ArrayGiorniSettimana = {"Lunedi", "Martedi", "Mercoledi", "Giovedi", "Venerdi", "Sabato", "Domenica" };
        //MESI
        string[] ArrayMesi = {"Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre",
                            "Dicembre"};

        private void comboPrincipale_SelectedIndexChanged(object sender, EventArgs e)
        {
            /*
            INDICI
            0 = GIORNI DELLA SETTIMANA
            1 = MESI
            */
            comboSecondaria.Items.Clear();
            switch (comboPrincipale.SelectedIndex)
            {
                case 0:
                    for (int a = 0; a < ArrayGiorniSettimana.Length; a++)
                    {
                        comboSecondaria.Items.Add(ArrayGiorniSettimana[a]);
                        comboSecondaria.SelectedIndex = 0;
                    }
                    break;
                case 1:
                    for (int a = 0; a < ArrayMesi.Length; a++)
                    {
                        comboSecondaria.Items.Add(ArrayMesi[a]);
                        comboSecondaria.SelectedIndex = 0;
                    }
                    break;
                default:
                    comboSecondaria.Items.Add("Nessun elemento valido selezionato");
                    break;
            }
        }
    }
}