Gestione dei Controlli Windows in C#

Come utilizzare i controlli di Windows in C#, è vero che esiste un ottimo ambiente di sviluppo che permette di fare tutto con un semplice drag and drop, però in questa maniera ne capirete senza dubbio il funzionamento base.

Nella scorsa lezione del corso sul linguaggio C# abbiamo introdotto la programmazione visuale con le winforms, tutto effettuato da codice. Ora, basterà cambiare il nome della nostra funzione Init in quella che l’ambiente di sviluppo si aspetta, InitializeComponent e fatta questa modifica al codice e salvato, la form potrà essere aperta per default in modalità visuale, ossia gestire la grandezza ed altre proprietà della finestra e dei controlli contenuti, completamente in maniera grafica.
Aggiungiamo alla nostra form un controllo etichetta ( label ), una casella combinata ( combobox ) ed un pulsante di comando ( command button ), servendoci della barra dei controlli standard e trascinandoli sulla nostra form. Per maggiori informazioni sui controlli di Windows potete fare riferimento a questo mio articolo, mentre per le proprietà di questi ultimi, potete studiarli o sull’aiuto in linea dell’ambiente di sviluppo oppure su qualche manuale dedicato al linguaggio C# ( anche se devo dire che potrebbero anche andare bene dei manuali sul VB.NET o addirittura su VC/C++, perché i controlli sono quasi gli stessi e con le stesse proprietà nei tre ambienti di sviluppo della Microsoft ). Il codice prodotto dopo l’aggiunta dei controlli è il seguente:

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

public class WinCorso : System.Windows.Forms.Form
{
   private Label lblMain;
   private ComboBox cmbMain;
   private Button btnMain;
   private Container cntMain = null;

   public WinCorso()
   {
         InitializeComponent();
   }

    protected override void Dispose(bool disposing)
   {
        if (disposing)
       {
              if (cntMain != null)
             {
                   cntMain.Dispose();
             }
        }
        base.Dispose(disposing);
   }

   private void InitializeComponent()
   {
         this.lblMain = new System.Windows.Forms.Label();
         this.cmbMain = new System.Windows.Forms.ComboBox();
         this.btnMain = new System.Windows.Forms.Button();
         this.SuspendLayout();

        // lblMain
        this.lblMain.AutoSize = true;
        this.lblMain.Location = new System.Drawing.Point(16, 25);
        this.lblMain.Name = "lblMain";
        this.lblMain.Size = new System.Drawing.Size(138, 13);
        this.lblMain.TabIndex = 0;
        this.lblMain.Text = "Scegliere l\'animale preferito:";

        // cmbMain
        this.cmbMain.FormattingEnabled = true;
        this.cmbMain.Items.AddRange(new object[] {
               "Cavallo",
               "Leone",
               "Scimmia",
               "Coccodrillo",
               "Elefante"});
        this.cmbMain.Location = new System.Drawing.Point(162, 23);
        this.cmbMain.Name = "cmbMain";
        this.cmbMain.Size = new System.Drawing.Size(240, 21);
        this.cmbMain.TabIndex = 1;

        // btnMain
        this.btnMain.Location = new System.Drawing.Point(138, 65);
        this.btnMain.Name = "btnMain";
        this.btnMain.Size = new System.Drawing.Size(162, 32);
        this.btnMain.TabIndex = 2;
        this.btnMain.Text = "Ho Scelto";
        this.btnMain.UseVisualStyleBackColor = true;

        // WinCorso
        this.ClientSize = new System.Drawing.Size(430, 122);
        this.Controls.Add(this.btnMain);
        this.Controls.Add(this.cmbMain);
        this.Controls.Add(this.lblMain);
        this.Name = "WinCorso";
        this.Text = "Corso di Windows";
        this.ResumeLayout(false);
        this.PerformLayout();
  }

  [STAThread]
  static void Main()
  {
      Application.Run(new WinCorso());
  }
}

Come potete notare era possibile anche fare tutto tramite codice sorgente, ma il tempo di sviluppo sarebbe stato certamente maggiore. Da notare che i valori nella casella combinata vengono inseriti negli items, che sono la lista dei singoli valori e che sono gestiti tramite le collections, così come per quelli delle liste ed in tutti quei controlli che possiedono gli items. Da dire che i valori possono essere un elenco statico, ma anche provenienti da un database, l’ambiente di sviluppo è perfettamente in grado di fare tutto graficamente ed in maniera semplicissima. Ovviamente dovete però conoscere il codice, affinché se doveste apportare delle piccole modifiche saprete dove mettere le mani, questo è il vero mio intento, insegnarvi a saper capire il codice creato dall’ambiente di sviluppo. Notate ancora che nella funzione InitializeComponent vengono istanziati i controlli, applicate le proprietà ed infine aggiunti all’insieme dei controlli della finestra. Nella prossima lezione termineremo questo esercizio trattando i delegati e gli eventi.

<< Lezione Precedente – Inizio CorsoIndice LezioniLezione Successiva >>

Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

Modifica preferenze cookie