WPF – il controllo CheckBox

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/

 

Un controllo CheckBox non è altro che una casella di spunta in grado di visualizzare uno stato alternativamente Vero o Falso (acceso/spento, attivo/inattivo). Lo stato del controllo è indipendente da altri controlli dello stesso tipo e può essere solitamente modificato dall’utente (salvo che questi comportamenti non siano modificati con le proprietà del controllo e/o con il codice Visual Basic). Nella seguente figura potete osservare un controllo CheckBox in fase di progettazione.

27.06

Se è impostata la proprietà IsThreeState a True, inoltre, possiamo gestire tre diversi stati che, alternativamente, cambieranno a ogni clic: prima il controllo assume il valore di Vero, poi il valore indefinito e poi il valore Falso (esempio di tre diversi stati nella seguente figura).

27.07

La definizione XAML predefinita è la seguente:

   1:  <CheckBox
   2:    Content="CheckBox"
   3:    Height="16"
   4:    HorizontalAlignment="Left"
   5:    Margin="10,10,0,0"
   6:    Name="CheckBox1"
   7:    VerticalAlignment="Top" />

 

Per fare un esempio, proviamo a creare una semplice applicazione in grado di determinare se un controllo CheckBox è selezionato, deselezionato o in uno stato indeterminato.

Create una nuova applicazione WPF e inserite il seguente codice XAML:

   1:  <!-- Esempio 27.04 -->
   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="350" Width="525">
   6:    <Grid>
   7:      <CheckBox
   8:        Content="CheckBox"
   9:        Height="16"
  10:        HorizontalAlignment="Left"
  11:        Margin="10,10,0,0"
  12:        Name="CheckBox1"
  13:        VerticalAlignment="Top"
  14:        IsThreeState="True"
  15:        Checked="HandleCheck"
  16:        Unchecked="HandleUnchecked"
  17:        Indeterminate="HandleThirdState"/>
  18:    </Grid>
  19:  </Window>

 

Notate che abbiamo aggiunto le seguenti tre proprietà alla definizione del controllo CheckBox:

   1:  Checked="HandleCheck"
   2:  Unchecked="HandleUnchecked"
   3:  Indeterminate="HandleThirdState"/>

 

I tre valori indicati corrispondono ai tre metodi che creeremo con il codice Visual Basic che vediamo qui di seguito:

   1:  ' Esempio: 27.04
   2:  Class MainWindow
   3:    Private Sub HandleCheck(
   4:        ByVal sender As Object,
   5:        ByVal e As RoutedEventArgs)
   6:      MessageBox.Show("Stato attivo")
   7:    End Sub
   8:  
   9:    Private Sub HandleUnchecked(
  10:        ByVal sender As Object,
  11:        ByVal e As RoutedEventArgs)
  12:      MessageBox.Show("Stato inattivo")
  13:    End Sub
  14:  
  15:    Private Sub HandleThirdState(
  16:        ByVal sender As Object,
  17:        ByVal e As RoutedEventArgs)
  18:      MessageBox.Show("Stato indeterminato")
  19:    End Sub
  20:  End Class

 

Potete vedere il risultato nella seguente figura.

27.08

 

La figura potrebbe far dubitare sulla correttezza dell’applicazione, ma bisogna tenere conto che nel momento in cui clicchiamo sul controllo CheckBox viene chiamato subito il metodo corrispondente allo stato in cui il controllo si troverà al termine dell’operazione. In pratica, nella figura, il controllo era in uno stato indeterminato. Cliccando sul controllo, tale controllo è passato allo stato inattivo, ma prima di aggiornare il proprio aspetto grafico, il controllo ha chiamato il metodo HandleUnchecked visualizzando la finestra del messaggio. Se confermate premendo il pulsante OK, subito dopo vedrete che lo stato del controllo CheckBox si aggiornerà allo stato inattivo.

Annunci

Pubblicato il 8 febbraio 2011 su Novità. Aggiungi ai preferiti il collegamento . 4 commenti.

  1. Buon giorno Dt. De Ghetto, ho comprato il suo libro “Vb2010 spiegato a mia nonna” e lo sto trovando molto utile. Ora sto cominciando a programmare in VB2010 anche se ho delle basi di VB6 e altro ancora prima ,ma oramai preistoria. VB6 come credo abbia scritto lei è totalmente diverso e questo mi sta creando alcuni problemi ad entrare nella logica VB2010. Ma una cosa non capisco nel passaggio tra i due sistemi di programmazione: quale ragione ci potesse essere di perdere la possibilità di creare matrici con il controllo Checkbox. Per uso personale necessito di inserire in un form più di 50 di questi controlli, suddivisi in 4 group box. scrivere il codice per ogni check box è piuttosto impegnativo e noioso quando invece con una matrice magari in un ciclo for–next si risolveva in poco tempo.
    Grazie
    Claudio

    Mi piace

  2. Grazie per la risposta Mario. Nessun problema per il ritardo, che non reputo tale, anche perchè ho letto sul sito che eri in ferie e quanto hai faticato a “scollegare” tuo figlio dal desktop trascinandolo per il giardino. Le indicazioni che mi hai fornito le trovo utili e le applicherò al mio programma che procede, lentamente, ma procede e questo mi appassiona giorno dopo giorno. Mi sembra di tornare ai tempi del 1985 quando affrontavo per la prima volta il BASIC (su pc Casio) che credo nessun altro aveva in Italia e quindi mi sentivo come isolato dal mondo, io e la striminzita guida che lo accompagnava.
    Ciao
    Claudio

    Mi piace

  3. In realtà non era mio figlio che faticava ad essere scollegato dal PC, ma ero io… 🙂
    In quanto al BASIC, hai iniziato poco dopo di quando ho iniziato io, nel 1984 con il Commodore VIC-20! 🙂
    Se hai bisogno, mi trovi (insieme ad altri) nei forum di DotNetWork.it (www.dotnetwork.it). L’iscrizione è gratuita, ma necessaria per poter scrivere sui forum, dove puoi porre tutti i tuoi quesiti e i tuoi dubbi. Cercheremo di aiutarti nel migliore dei modi.
    Ciao

    Mi piace

Rispondi

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 hanno fatto clic su Mi Piace per questo: