Condividi tramite


Procedura: visualizzare Windows Form modali e non

Aggiornamento: novembre 2007

Form e finestre di dialogo possono essere modali o non modali. Per consentire all'utente di continuare a utilizzare l'applicazione, un form o una finestra di dialogo modale deve essere chiusa o nascosta. Per ulteriori informazioni sull'utilizzo delle finestre di dialogo, vedere Input dell'utente all'interno di finestre di dialogo.

È opportuno che le finestre di dialogo che visualizzano messaggi importanti siano sempre modali. La finestra di dialogo Informazioni su in Visual Studio è un esempio di finestra di dialogo modale. MessageBox è un form modale che è possibile utilizzare.

Nel caso di form non modali è possibile passare da un form all'altro senza chiudere il form iniziale. Mentre il form rimane visualizzato, l'utente può continuare a lavorare nella stessa o in un'altra applicazione.

La programmazione dei form non modali è più complessa, poiché l'utente può accedervi in base a una sequenza non prevedibile. Lo stato dell'applicazione deve comunque restare uniforme, indipendentemente dalle azioni compiute dall'utente. Spesso le finestre degli strumenti vengono visualizzate come non modali. La finestra di dialogo Trova, visualizzabile dal menu Modifica in Visual Studio, è un esempio di finestra di dialogo non modale. Utilizzare i form non modali per visualizzare comandi o informazioni utilizzati di frequente.

Nota:

Le finestre di dialogo e i comandi di menu visualizzati potrebbero non corrispondere a quelli descritti nella Guida in linea in quanto dipendono dall'edizione o dalle impostazioni attive. Per modificare le impostazioni, scegliere Importa/Esporta impostazioni dal menu Strumenti. Per ulteriori informazioni, vedere Impostazioni di Visual Studio.

Per visualizzare un form come finestra di dialogo modale

  • Chiamare il metodo ShowDialog.

    Nell'esempio di codice riportato di seguito viene illustrato come visualizzare una finestra di dialogo modale.

    Dim frmAbout as New Form()
    ' Display frmAbout as a modal dialog
    frmAbout.ShowDialog()
    
    //Display frmAbout as a modal dialog
    Form frmAbout = new Form();
    frmAbout.ShowDialog();
    
    //Display frmAbout as a modal dialog
    Form frmAbout =  new Form();
    frmAbout.ShowDialog();
    
    Form ^ frmAbout = gcnew Form();
    //Display frmAbout as a modal dialog
    frmAbout->ShowDialog();
    

    Il metodo ShowDialog dispone di un argomento facoltativo, owner, che consente di specificare una relazione padre-figlio per un form. Ad esempio, quando il codice nel form principale visualizza una finestra di dialogo, per indicare il form principale come proprietario della finestra di dialogo è possibile passare Me (in Visual Basic) o this (in Visual C#), come viene illustrato nel codice che segue.

    Private Sub mnuAbout_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles mnuAbout.Click
       Dim f As New Form()
       f.ShowDialog(Me)
    End Sub
    
    private void mnuAbout_Click(object sender, System.EventArgs e)
    {
       Form f = new Form();
       f.ShowDialog(this);
    }
    
    private void mnuAbout_Click(System.Object sender, System.EventArgs e)
    {
       Form f =  new Form();
       f.ShowDialog(this);
    }
    
    private:
       void mnuAbout_Click(System::Object ^ sender,
          System::EventArgs ^ e)
       {
          Form ^ f = gcnew Form();
          f->ShowDialog(this);
       }
    

Per visualizzare un form come finestra di dialogo non modale

  • Chiamare il metodo Show.

    Nell'esempio riportato di seguito viene illustrato come visualizzare una finestra di dialogo Informazioni su in formato non modale.

    Dim f As New Form()
    ' Display f as a modeless dialog.
    f.Show()
    
    //Display f as a modeless dialog
    Form f= new Form();
    f.Show();
    
    //Display f as a modeless dialog
    Form f = new Form();
    f.ShowDialog(this);
    
    Form ^ f = gcnew Form();
    //Display f as a modeless dialog
    f->Show();
    
    Nota:

    Se un form viene visualizzato come modale, il codice che segue il metodo ShowDialog non verrà eseguito fino a quando la finestra di dialogo non sarà chiusa. Quando un form viene visualizzato come non modale, invece, il codice che segue il metodo Show viene eseguito immediatamente dopo la visualizzazione del form.

Vedere anche

Attività

Procedura: recuperare informazioni sulle finestre di dialogo in modo selettivo utilizzando proprietà multiple

Procedura dettagliata: recupero collettivo di informazioni relative alle finestre di dialogo tramite oggetti

Riferimenti

Panoramica sui Windows Form

Altre risorse

Creazione di un nuovo Windows Form

Finestre di dialogo in Windows Form