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