Condividi tramite


Informazioni dettagliate: personalizzazione del controllo utente

Aggiornamento: novembre 2007

In questa lezione verrà descritto come personalizzare il controllo utente e renderlo più utile.

Aggiunta di etichette

Nella lezione precedente è stato eseguito il test del controllo utente NamesControl e ne è stato verificato il corretto funzionamento. Sono stati anche evidenziati alcuni miglioramenti che potrebbero essere apportati. Ad esempio, il nome da immettere in ciascuna casella di testo non è indicato con chiarezza e non vi è modo di verificare che un utente immetta tutti e tre i nomi.

Per rendere il controllo utente più utile, è possibile aggiungere etichette per l'identificazione di ciascuna casella di testo. È possibile impostare il testo delle etichette in modo da indicare il nome, il secondo nome e il cognome. Si potrebbe tuttavia cambiare idea in un momento successivo e decidere di specificare ad esempio l'iniziale del secondo nome. È preferibile pertanto creare proprietà per il testo delle etichette in modo da poter modificare il testo in fase di progettazione e specificare un valore predefinito per ciascuna proprietà.

Procedura

Per personalizzare il controllo utente

  1. Aprire il progetto NamesUserControl creato nella lezione precedente. Se il progetto non è stato salvato, tornare prima alla lezione precedente, Test del controllo utente, e completare le procedure indicate.

  2. In Esplora soluzioni selezionare NamesControl.vb, quindi scegliere Finestra di progettazione dal menu Visualizza.

  3. Trascinare i controlli Label dalla Casella degli strumenti nella finestra di progettazione e posizionarne uno su ciascun controllo TextBox.

  4. In Esplora soluzioni selezionare NamesControl.vb, quindi scegliere Codice dal menu Visualizza.

  5. Nell'editor di codice aggiungere il codice riportato di seguito per creare le proprietà del testo dell'etichetta.

    Private text1 As String = "First Name"
    Property Label1Text() As String
        Get
            Return text1
        End Get
        Set(ByVal value As String)
            text1 = value
            Label1.Text = text1
        End Set
    End Property
    Private text2 As String = "Middle Name"
    Property Label2Text() As String
        Get
            Return text2
        End Get
        Set(ByVal value As String)
            text2 = value
            Label2.Text = text2
        End Set
    End Property
    Private text3 As String = "Last Name"
    Property Label3Text() As String
        Get
            Return text3
        End Get
        Set(ByVal value As String)
            text3 = value
            Label3.Text = text3
        End Set
    End Property
    

    Nel codice sono dichiarate tre variabili Private per il testo dell'etichetta e le dichiarazioni includono il valore predefinito da visualizzare.

  6. Nell'editor di codice selezionare (Eventi NamesControl) dalla casella di riepilogo a discesa sulla sinistra, quindi selezionare l'evento Load dalla casella di riepilogo a discesa sulla destra.

  7. Aggiungere il codice seguente al gestore eventi NamesControl_Load.

    ' Initialize the three labels
    Me.Label1.Text = Label1Text
    Me.Label2.Text = Label2Text
    Me.Label3.Text = Label3Text
    
  8. Scegliere Genera soluzione dal menu Genera.

  9. In Esplora soluzioni selezionare Form1.vb, quindi scegliere Finestra di progettazione dal menu Visualizza.

    Verificare che nelle etichette sia presente il testo predefinito. Provare a modificare la proprietà Label1Text nella finestra Proprietà e verificare che la modifica venga applicata anche al controllo.

  10. Scegliere Chiudi dal menu File per chiudere la finestra di progettazione del form.

Aggiunta della convalida

Un'altra personalizzazione utile consiste nell'aggiunta di codice per la convalida degli elementi immessi, al fine di verificarne la correttezza. Anziché convalidare ciascun singolo controllo TextBox, è possibile scrivere un codice di convalida per l'intero controllo utente.

Per la maggior parte dei controlli è presente un evento Validating che viene generato quando lo stato attivo viene spostato all'esterno del controllo. È necessario immettere il codice di convalida in corrispondenza di tale evento. In questo caso, verrà scritto il codice che consente di verificare che ciascuna casella di testo contenga un nome.

Se una o più caselle di testo sono vuote, è possibile fare in modo che venga visualizzata una finestra di messaggio che ricordi all'utente di immettere il proprio nome. È possibile esporre una proprietà contenente un messaggio predefinito, in modo da consentire all'utente del controllo di modificare il messaggio in base alle proprie esigenze.

Il secondo nome potrebbe inoltre non essere richiesto per l'utente del controllo. È pertanto possibile aggiungere anche una proprietà Boolean per disattivare la convalida della casella di testo MiddleName.

Procedura

Per aggiungere la convalida

  1. Nell'editor di codice aggiungere il codice per due proprietà correlate alla convalida: una per specificare se è richiesto il secondo nome, l'altra per specificare un messaggio da visualizzare in caso di esito negativo della convalida.

    Private required As Boolean = True
    Property MiddleNameRequired() As Boolean
        Get
            Return required
        End Get
        Set(ByVal value As Boolean)
            required = value
        End Set
    End Property
    Private errormessage As String = "Please enter your name."
    Property ValidationErrorMessage() As String
        Get
            Return errormessage
        End Get
        Set(ByVal value As String)
            errormessage = value
        End Set
    End Property
    
  2. Nell'editor di codice selezionare (Eventi NamesControl) dalla casella di riepilogo a discesa sulla sinistra, quindi selezionare l'evento Validating dalla casella di riepilogo a discesa sulla destra.

  3. Aggiungere il codice seguente al gestore eventi NamesControl_Validating.

    If MiddleNameRequired = True Then
        If FirstName.Text = "" Or MiddleName.Text = "" Or _
    LastName.Text = "" Then
            MsgBox(ValidationErrorMessage)
        End If
    Else
        ' Middle name isn't required.
        If FirstName.Text = "" Or LastName.Text = "" Then
            MsgBox(ValidationErrorMessage)
        End If
    End If
    
  4. Scegliere Genera soluzione dal menu Genera.

  5. In Esplora soluzioni selezionare Form1.vb, quindi scegliere Finestra di progettazione dal menu Visualizza.

    Selezionare il controllo utente sul form e verificare che le due nuove proprietà siano visualizzate nella finestra Proprietà.

  6. Dalla Casella degli strumenti trascinare un controllo Button nel form.

  7. Premere F5 per eseguire il programma.

    Immettere solo nome e cognome, non il secondo nome. Fare clic sul pulsante. Verrà visualizzata una finestra di messaggio contenente il testo ValidationErrorMessage.

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

Passaggi successivi

In questa lezione è stato descritto come personalizzare il controllo utente e renderlo più utile. Nella lezione successiva verrà descritto come utilizzare la grafica per creare testo e immagini.

Lezione successiva: Creazione di immagini: utilizzo di elementi grafici

Vedere anche

Attività

Test del controllo utente

Altre risorse

Oggetti visibili: creazione di un controllo utente

Programmazione a oggetti: utilizzo di classi

Presentazione guidata di Visual Basic