Procedura: visualizzare Windows Form modali e non
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
È 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.
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();
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 = 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();
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.