Condividi tramite


Procedura dettagliata: Ereditare da un controllo di Windows Forms con C#

Con C#, è possibile creare potenti controlli personalizzati tramite ereditarietà. Tramite l'ereditarietà è possibile creare controlli che mantengono tutte le funzionalità intrinseche dei controlli Windows Form standard, ma incorporano anche funzionalità personalizzate. In questa procedura dettagliata verrà creato un semplice controllo ereditato denominato ValueButton. Questo pulsante erediterà la funzionalità dal controllo Windows Form Button standard ed esporrà una proprietà personalizzata denominata ButtonValue.

Creare il progetto

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

Per creare la libreria di controlli ValueButtonLib e il controllo ValueButton

  1. In Visual Studio creare un nuovo progetto libreria di controlli Windows Form e denominarlo ValueButtonLib.

    Il nome del progetto, ValueButtonLib, viene assegnato anche allo spazio dei nomi radice per impostazione predefinita. Lo spazio dei nomi radice viene usato per qualificare i nomi dei componenti nell'assembly. Ad esempio, se due assembly forniscono componenti denominati ValueButton, è possibile specificare il ValueButton componente usando ValueButtonLib.ValueButton. Per altre informazioni, vedere Spazi dei nomi.

  2. 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 il pulsante quando richiesto per rinominare tutti i riferimenti all'elemento di codice 'UserControl1'.

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

  4. Individuare la riga dell'istruzione class, public partial class ValueButton, e modificare il tipo da cui eredita questo controllo da UserControl a Button. In questo modo, il controllo ereditato eredita tutte le funzionalità del controllo Button.

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

  6. Individuare il InitializeComponent metodo e rimuovere la riga che assegna la AutoScaleMode proprietà . Questa proprietà non esiste nel Button controllo .

  7. Scegliere Salva tutto dal menu File per salvare il progetto.

    Annotazioni

    Un designer visivo non è più disponibile. Poiché il Button controllo esegue il proprio disegno, non è possibile modificarne l'aspetto nella finestra di progettazione. La rappresentazione visiva sarà esattamente uguale a quella della classe da cui eredita (ovvero , Button) a meno che non venga modificata nel codice. È comunque possibile aggiungere componenti, senza elementi dell'interfaccia utente, all'area di progettazione.

Aggiungere una proprietà al controllo ereditato

Un possibile uso dei controlli Windows Form ereditati è la creazione di controlli identici nell'aspetto dei controlli Windows Form standard, ma espongono proprietà personalizzate. In questa sezione si aggiungerà una proprietà denominata 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 . Subito dopo il {, digitare il codice seguente:

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

    Questo codice imposta i metodi in base ai quali la ButtonValue proprietà viene archiviata e recuperata. L'istruzione get imposta il valore restituito al valore archiviato nella variabile varValueprivata e l'istruzione set imposta il valore della variabile privata usando la value parola chiave .

  3. Scegliere Salva tutto dal menu File per salvare il progetto.

Testare il controllo

I controlli non sono progetti autonomi; devono essere ospitati in un contenitore. Per testare il controllo, è necessario fornire un progetto di test in cui eseguirlo. È anche necessario rendere il controllo accessibile al progetto di test costruendolo (compilandolo). In questa sezione compilerai il tuo controllo e lo testerai in un Windows Forms.

Per costruire il tuo controllo

Nel menu Compila scegliere Compila soluzione. La compilazione deve avere esito positivo senza errori o avvisi del compilatore.

Per creare un progetto di test

  1. Scegliere Aggiungi dal menu File e quindi fare clic su Nuovo progetto per aprire la finestra di dialogo Aggiungi nuovo progetto.

  2. Selezionare il nodo Windows sotto il nodo Visual C# e fare clic su Applicazione Windows Form.

  3. Nella casella Nome immettere Test.

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

  5. Fare clic sulla scheda Progetti etichettati. Il progetto ValueButtonLib verrà elencato in Nome progetto. Fare doppio clic sul progetto per aggiungere il riferimento al progetto di test.

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

Per aggiungere il controllo al modulo

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

  2. Nella casella degli strumenti selezionare ValueButtonLib Components (Componenti ValueButtonLib). Fare doppio clic su ValueButton.

    Nel form viene 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à di questo controllo. Si noti che sono identici alle proprietà esposte da un pulsante standard, ad eccezione del fatto che è presente una 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 Etichetta per aggiungere un Label controllo al modulo.

  7. Rilocare l'etichetta al centro del modulo.

  8. Fare doppio clic su valueButton1.

    L'editor di codice si apre all'evento valueButton1_Click .

  9. Inserire la riga di codice seguente.

    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.

    Form1 Viene visualizzato.

  12. Fare clic su valueButton1.

    Il numero '5' viene visualizzato in label1, dimostrando che la proprietà ButtonValue del controllo ereditato è stata passata a label1 attraverso il metodo valueButton1_Click. ValueButton Il controllo eredita quindi tutte le funzionalità del pulsante Windows Form standard, ma espone una proprietà personalizzata aggiuntiva.

Vedere anche