WPF – il controllo ComboBox

Questo testo fa parte del capitolo 27 del libro “Visual Basic 2010 spiegato a mia nonna” che sarà pubblicato fra poche settimane. Trovate l’esempio di codice tra gli esempi liberamente scaricabili al seguente indirizzo:https://deghetto.wordpress.com/2011/02/05/libro-visual-basic-2010-spiegato-a-mia-nonna/

Il controllo ComboBox è sostanzialmente una casella a discesa che mostra un elenco di scelte possibili tra quelle preimpostate. Nella seguente figura è possibile vedere il controllo in fase di progettazione.

27.09

La definizione XAML predefinita è la seguente:

 

   1:  <ComboBox
   2:    Height="23"
   3:    HorizontalAlignment="Left"
   4:    Margin="10,10,0,0"
   5:    Name="ComboBox1"
   6:    VerticalAlignment="Top"
   7:    Width="120" />

 

Vediamo, ora, come di consueto un esempio di utilizzo di un controllo ComboBox. Create una nuova applicazione WPF e sostituite il codice XAML con il seguente:

   1:  <!-- Esempio: 27.05 -->
   2:    <Window x:Class="MainWindow"
   3:      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   4:      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   5:      Title="MainWindow" Height="88" Width="313">
   6:      <Grid>
   7:        <ComboBox
   8:          <Height="23"
   9:            HorizontalAlignment="Left"
  10:            Margin="10,10,0,0"
  11:            Name="ComboBox1"
  12:            VerticalAlignment="Top"
  13:            Width="270">
  14:          <ComboBoxItem
  15:            Name="Scelta1"
  16:            Content="Scelta n. 1" />
  17:          <ComboBoxItem
  18:            Name="Scelta2"
  19:            Content="Scelta n. 2" />
  20:          <ComboBoxItem
  21:            Name="Scelta3"
  22:            Content="Scelta n. 3" />
  23:          <ComboBoxItem
  24:            Name="Scelta4"
  25:            Content="Scelta n. 4" />
  26:          <ComboBoxItem
  27:            Name="Scelta5"
  28:            Content="Scelta n. 5" />
  29:        </ComboBox>
  30:      </Grid>
  31:    </Window>

 

Il codice Visual Basic, invece, è il seguente:

   1:  ' Esempio: 27.05
   2:  Class MainWindow
   3:    Private Sub ComboBox1_DropDownClosed(
   4:        ByVal sender As Object,
   5:        ByVal e As System.EventArgs) _
   6:        Handles ComboBox1.DropDownClosed
   7:      MessageBox.Show(
   8:        "Hai selezionato la voce: " &
   9:        Me.ComboBox1.Text)
  10:    End Sub
  11:  End Class

 

Infine, ecco il risultato nella seguente figura.

27.10

Pubblicato il 13 febbraio 2011 su Novità. Aggiungi ai preferiti il collegamento . 6 commenti.

  1. Ottimo esempio ma… se carico cosi una combobox posso gestire il Value ????
    il campo nascosto che mi dice scelta n.1 value = 1

    Mi piace

  2. Ciao Valentina.
    Non c’è una proprietà Value, ma puoi ottenere la posizione dell’elemento selezionato così:

    Me.ComboBox1.SelectedIndex

    Per esempio

    MessageBox.Show(“Posizione: ” &
    Me.ComboBox1.SelectedIndex.ToString)

    Attenzione che SelectedIndex ti restituisce l’indice dell’elemento selezionato con base zero, cioè per l’elemento 1 ti restituisce 0, per il 2° ti restituisce 1 e così via.
    Ciao!

    Mi piace

  3. anna maria sdraffa

    Gentile Signor DeGhetto, ho acquistato il suo libro ma purtroppo non riesco a trovarvi la risposta a tutto. Il problema è molto semplice, e quindi la colpa è sicuramente della mia ignoranza. Ho tre Combobox nel form. Due di esse sono logicamente correlate (una contiene le province, l’altra deve far vedere i Comuni di quella provincia) mentre la terza contiene dati del tutto svincolati dai precedenti (tabella Titoli di sttudio). Ora, se popolo le ComboBox con una query (tecnologia LINQ) funziona tutto a meraviglia, ma se associo direttamente alle Combo i campi del dataBase (comboBox.DataSource = …; ComboBox.DisplayMember = … )riesco a selezionare solo una delle tabelle (ovviamente non quella dei Comuni che non può essere selezionata per prima). Dopo che ho selezionato ad esempio una provincia è come se il Sistema fosse morto, non riesco neppure con il Debug perchè nulla si muove. Idem se seleziono per primo il Titolo di Studio, la Combo delle province sembra vuota). Ora Lei mi dirà: ma se nell’altro modo funziona di cosa si preoccupa?🙂 Lo so, però vorrei capire. E’ sbagliato il secondo modo di operare? La ringrazio per la sua eventuale risposta
    Anna S.

    Mi piace

  4. Ciao Anna Maria (spero che non ti dispiaccia il “tu”, ovviamente reciproco…).
    In merito al libro, è normale che non vi si possa trovare tutto: per avere tutte le risposte per qualsiasi situazione occorrerebbero svariati libri…
    In merito al problema specifico è difficile risponderti senza vedere un po’ di codice: inviami un progetto di esempio “ridotto” con le sole cose che servono per capire e gli dò un’occhiata (e-mail mario@deghetto.it).
    Ciao

    Mi piace

  5. anna maria sdraffa

    Ma sei stato gentilissimo a rispondermi così velocemente! Per quanto riguarda il libro è chiaro che sono d’accordo: i testi forniscono una traccia, non certo la soluzione ad ogni problema. Comunque stamattina ho avuto una bella sorpresa: ho ripristinato le istruzioni che (giuro!) ieri funzionavano e che avevo banalmente nooperizzato, e ho nooperizzato le altre. Non funziona lo stesso!!! Ho toccato sicuramente qualcosa ma non saprei dire cosa …
    Mi sento veramente un disastro. Preparo un po’ di codice e te lo invio per posta elettronica. Ti ringrazio infinitamente.
    Anna

    Mi piace

  6. anna maria sdraffa

    Ora sembra funzionare tutto. E sai perchè? Perchè attraverso la finestra “proprietà ” ho disassociato alle due ComboBox i campi del dataBase, che erano invece associati a SelectedItem e Text . però non ho capito perchè desse così fastidio …

    Mi piace

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: