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;
            }
        }
    }
}
Claudio Masci

Sono innanzitutto un appassionato di informatica e tecnologia in generale. Lavoro in ambito informatico da circa 16 anni, spaziando in diversi campi, andando dalla programmazione web, allo sviluppo di software, dalla grafica alla modellazione 3d ed al video editing, ho sempre voluto approfondire ogni aspetto e questo mi ha permesso di lavorare in diversi ambiti informatici.

Rispondi