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 Windows Form standard, ma includono anche funzionalità personalizzate. In questa procedura verrà creato un controllo ereditato semplice denominato ValueButton. Questo pulsante eredita la funzionalità dal controllo standard Windows Form Button ed espone una proprietà personalizzata denominata ButtonValue.
Nota
È possibile che le finestre di dialogo e i comandi di menu visualizzati siano diversi da quelli descritti nella Guida a seconda delle impostazioni attive o dell'edizione del programma. Per modificare le impostazioni, scegliere Importa/Esporta impostazioni dal menu Strumenti. Per ulteriori informazioni, vedere Gestione delle impostazioni.
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
Scegliere Nuovo dal menu File, quindi fare clic su Progetto. Verrà visualizzata la finestra di dialogo Nuovo progetto.
Selezionare il modello di progetto Libreria di controlli Windows Form dall'elenco dei progetti di Visual C#, quindi digitare ValueButtonLib nella casella Nome.
Per impostazione predefinita il nome del progetto,ValueButtonLib, verrà 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 ValueButtonLib.ValueButton. Per ulteriori informazioni, vedere Spazi dei nomi (Guida per programmatori C#).
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 Sì quando richiesto per rinominare tutti i riferimenti all'elemento di codice 'UserControl1'.
In Esplora soluzioni fare clic con il pulsante destro del mouse su ValueButton.cs e scegliere Visualizza codice.
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.
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.
Individuare il metodo InitializeComponent e rimuovere la riga che assegna la proprietà AutoScaleMode, in quanto tale proprietà non esiste nel controllo Button.
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. È comunque possibile aggiungere nell'area di progettazione i componenti che non dispongono di 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à illustrata la modalità di aggiunta della proprietà ButtonValue al controllo.
Per aggiungere la proprietà Value
In Esplora soluzioni fare clic con il pulsante destro del mouse su ValueButton.cs, quindi scegliere Visualizza codice dal menu di scelta rapida.
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; } }
Questo codice consente di impostare i metodi per la memorizzazione e il 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.
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 testare il controllo, è necessario creare un progetto di test in cui eseguirlo. È inoltre necessario rendere il controllo accessibile al progetto di test compilandolo. In questa sezione verrà illustrato come compilare un controllo ed eseguirne il test in un Windows Form.
Per compilare il controllo
Scegliere Compila soluzione dal menu Compila.
La compilazione dovrebbe essere completata correttamente senza avvisi o errori di compilazione.
Per creare un progetto di test
Scegliere Aggiungi dal menu File, quindi fare clic su Nuovo progetto. Verrà visualizzata la finestra di dialogo Aggiungi nuovo progetto.
Selezionare il nodo Windows sotto il nodo Visual C#, quindi fare clic su Applicazione Windows Form.
Nella casella Nome, digitare Test.
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 Aggiungi riferimento.
Scegliere la scheda Progetti. Il progetto ValueButtonLib verrà elencato in Nome progetto. Fare doppio clic sul progetto per cui si desidera aggiungere il riferimento al progetto di test.
In Esplora soluzioni, fare doppio clic su Test e scegliere Compila.
Per aggiungere il controllo al form
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.
Nella Casella degli strumenti fare clic su Componenti ValueButtonLib. Fare doppio clic su ValueButton.
Nel form verrà visualizzato un controllo ValueButton.
Fare clic con il pulsante destro del mouse su ValueButton, quindi scegliere Proprietà dal menu di scelta rapida.
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.
Impostare la proprietà ButtonValue su 5.
Nella scheda Tutti i Windows Form della Casella degli strumenti fare doppio clic su Label per aggiungere un controllo Label al form.
Posizionare l'etichetta al centro del form.
Doppio clic su valueButton1.
Nell'editor di codice verrà visualizzato l'evento valueButton1_Click.
Inserire la seguente riga di codice:
[C#]
label1.Text = valueButton1.ButtonValue.ToString();
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.
Scegliere Avvia debug dal menu Debug.
Viene visualizzato Form1.
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 per Windows Form, ma esporrà una proprietà personalizzata aggiuntiva.
Vedere anche
Attività
Procedura dettagliata: modifica di un controllo composito con Visual C#