Condividi tramite


Procedura dettagliata: eredità da un controllo di Windows Form con Visual C#

Visual C# 2005 consente di creare controlli personalizzati avanzati sfruttando l'ereditarietà. L'ereditarietà consente di creare nuovi controlli che non solo conservano tutte le funzionalità proprie dei controlli di Windows Form standard, ma includono anche funzionalità personalizzate. In questa procedura dettagliata verrà creato un controllo ereditato semplice denominato ValueButton, ossia un pulsante con le funzionalità ereditate dal controllo standard Button Windows Form che espone una proprietà personalizzata denominata ButtonValue.

Nota

Le finestre di dialogo e i comandi di menu visualizzati possono differire da quelli descritti nella Guida a seconda delle impostazioni attive o dell'edizione in uso. Per modificare le impostazioni, scegliere Importa/Esporta impostazioni nel menu Strumenti. Per ulteriori informazioni, vedere Impostazioni di Visual Studio.

Creazione del progetto

Quando si crea un nuovo progetto è necessario specificarne il nome per impostare lo spazio dei nomi di primo livello, il nome dell'assembly e il nome del progetto e per assicurarsi che il componente predefinito sia inserito nello spazio dei nomi corretto.

Per creare la libreria di controlli ValueButtonLib e il controllo ValueButton

  1. Scegliere Nuovo dal menu File, quindi fare clic su Progetto. Verrà visualizzata la finestra di dialogo Nuovo progetto.

  2. Selezionare il modello di progetto Libreria di controlli Windows dall'elenco dei progetti di Visual C#, quindi digitare ValueButtonLib nella casella Nome.

    Per impostazione predefinita, il nome del progetto, ValueButtonLib, viene assegnato anche allo spazio dei nomi di primo livello. Lo spazio dei nomi di primo livello viene utilizzato per qualificare i nomi dei componenti dell'assembly. Se ad esempio due assembly forniscono componenti denominati ValueButton, sarà possibile specificare il componente ValueButton utilizzando il nome completo ValueButtonLib.ValueButton. Per ulteriori informazioni, vedere Spazi dei nomi (Guida per programmatori C#).

  3. In Esplora soluzioni fare clic con il pulsante destro del mouse su UserControl1.cs, quindi scegliere Rinomina dal menu di scelta rapida. Modificare il nome del file in ValueButton.cs. Scegliere quando viene richiesto se si desidera rinominare tutti i riferimenti all'elemento di codice UserControl1.

  4. In Esplora soluzioni fare clic con il pulsante destro del mouse su ValueButton.cs e scegliere Visualizza codice.

  5. Individuare la riga di istruzione class, public partial class ValueButton, e cambiare il tipo da cui il controllo eredita da UserControl in Button. In questo modo il controllo erediterà tutte le funzionalità del controllo Button.

  6. In Esplora soluzioni aprire il nodo ValueButton.cs per visualizzare il file di codice ValueButton.Designer.cs generato nella finestra di progettazione. Aprire il file nell'editor di codice.

  7. Individuare il metodo InitializeComponent e rimuovere la riga che assegna la proprietà AutoScaleMode, in quanto tale proprietà non esiste nel controllo Button.

  8. Per salvare il progetto, scegliere Salva tutto dal menu File.

    Nota

    La finestra di progettazione visiva non sarà più disponibile. Poiché il controllo Button gestisce la propria visualizzazione, infatti, non è possibile modificarne l'aspetto nella finestra di progettazione. La rappresentazione visiva di tale controllo sarà identica a quella della classe da cui eredita, vale a dire Button, a meno che non venga modificata nel codice. Nell'area di progettazione è comunque possibile aggiungere componenti che non utilizzano elementi dell'interfaccia utente.

Aggiunta di una proprietà al controllo ereditato

Un possibile utilizzo dei controlli ereditati per Windows Form è la creazione di controlli aventi aspetto e funzionalità identici ai controlli standard per Windows Form, ma che espongono proprietà personalizzate. In questa sezione verrà aggiunta la proprietà ButtonValue al controllo.

Per aggiungere la proprietà Value

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse su ValueButton.cs, quindi scegliere Visualizza codice dal menu di scelta rapida.

  2. Individuare l'istruzione class. Immediatamente dopo il simbolo { digitare il seguente codice:

    [C#]

    // Creates the private variable that will store the value of your 
    // property.
    private int varValue;
    // Declares the property.
    public int ButtonValue
    {
       // Sets the method for retrieving the value of your property.
       get
       {
          return varValue;
       }
       // Sets the method for setting the value of your property.
       set
       {
          varValue = value;
       }
    }
    

    In questo codice vengono impostati i metodi di memorizzazione e recupero della proprietà ButtonValue. L'istruzione get imposta il valore restituito sul valore memorizzato nella variabile privata varValue, mentre l'istruzione set imposta il valore della variabile privata mediante la parola chiave value.

  3. Per salvare il progetto, scegliere Salva tutto dal menu File.

Test del controllo

I controlli non sono progetti autonomi e devono pertanto essere inseriti in un contenitore. Per eseguire il test del controllo, è necessario specificare un progetto di test, nonché generare il controllo in modo da renderlo accessibile al progetto di test. In questa sezione verrà illustrato come generare un controllo ed eseguirne il test in un Windows Form.

Per generare il controllo

  • Scegliere Genera soluzione dal menu Genera.

    La generazione dovrebbe essere completata correttamente senza avvisi o errori di compilazione.

Per creare un progetto di test

  1. Scegliere Aggiungi dal menu File, quindi fare clic su Nuovo progetto. Verrà visualizzata la finestra di dialogo Aggiungi nuovo progetto.

  2. Selezionare il nodo Windows sotto il nodo Visual C#, quindi fare clic su Applicazione Windows.

  3. Nella casella Nome digitare Test.

  4. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo Riferimenti del progetto di test, quindi scegliere Aggiungi riferimento dal menu di scelta rapida per visualizzare la finestra di dialogo corrispondente.

  5. Scegliere la scheda Progetti. Il progetto ValueButtonLib verrà elencato in Nome progetto. Fare doppio clic sul progetto per aggiungerlo come riferimento al progetto di test.

  6. In Esplora soluzioni fare clic con il pulsante destro del mouse su Test e scegliere Genera.

Per aggiungere il controllo al form

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse su Form1.cs e scegliere Visualizza finestra di progettazione dal menu di scelta rapida.

  2. Nella Casella degli strumenti fare clic su Componenti ValueButtonLib. Fare doppio clic su ValueButton.

    Nel form verrà visualizzato un controllo ValueButton.

  3. Fare clic con il pulsante destro del mouse su ValueButton e scegliere Proprietà dal menu di scelta rapida.

  4. Nella finestra Proprietà esaminare le proprietà del controllo. Si noti che tali proprietà sono identiche a quelle esposte da un pulsante standard, con la sola differenza che è disponibile la proprietà aggiuntiva ButtonValue.

  5. Impostare la proprietà ButtonValue su 5.

  6. Nella scheda Tutti i Windows Form della Casella degli strumenti fare doppio clic su Label per aggiungere un controllo Label al form.

  7. Posizionare l'etichetta al centro del form.

  8. Fare doppio clic su valueButton1.

    Nell'editor di codice verrà visualizzato l'evento valueButton1_Click.

  9. Inserire la seguente riga di codice:

    [C#]

    label1.Text = valueButton1.ButtonValue.ToString();
    
  10. In Esplora soluzioni fare clic con il pulsante destro del mouse su Test e scegliere Imposta come progetto di avvio dal menu di scelta rapida.

  11. Scegliere Avvia debug dal menu Debug.

    Verrà visualizzato il Form1.

  12. Fare clic su valueButton1.

    Il numero "5" verrà visualizzato in label1 ad indicare che la proprietà ButtonValue del controllo ereditato è stata passata a label1 mediante il metodo valueButton1_Click. Il controllo ValueButton erediterà tutte le funzionalità del pulsante standard Windows Form, ma esporrà una proprietà personalizzata aggiuntiva.

Vedere anche

Attività

Procedura: visualizzare un controllo nella finestra di dialogo Personalizza Casella degli strumenti
Procedura dettagliata: modifica di un controllo composito con Visual C#

Altre risorse

Programmazione con i componenti
Procedure dettagliate per la modifica di componenti