Muestra el formulario como un cuadro de diálogo modal con el la ventana activa actualmente establecida como su propietaria.
Espacio de nombres: System.Windows.Forms
Ensamblado: System.Windows.Forms (en system.windows.forms.dll)

Sintaxis
Visual Basic (Declaración)
Public Function ShowDialog As DialogResult
Dim instance As Form
Dim returnValue As DialogResult
returnValue = instance.ShowDialog
public DialogResult ShowDialog ()
public:
DialogResult ShowDialog ()
public DialogResult ShowDialog ()
public function ShowDialog () : DialogResult
Valor devuelto
Uno de los valores de
DialogResult.

Excepciones
| Tipo de excepción | Condición |
|---|
ArgumentException | El formulario especificado en el parámetro owner es el mismo que el formulario que se va a mostrar. |
InvalidOperationException | El formulario que se va a mostrar ya está visible. O bien El formulario que se va a mostrar está deshabilitado. O bien El formulario que se va a mostrar no es una ventana de nivel superior. O bien El formulario que se va a mostrar como un cuadro de diálogo ya es un formulario modal. O bien El proceso actual no se está ejecutando en modo de interacción con el usuario (para obtener más información, vea UserInteractive). |

Comentarios
Este método se puede usar para mostrar un cuadro de diálogo modal en la aplicación. Cuando se llama a este método, el código que lo sigue no se ejecuta hasta que se ha cerrado el cuadro de diálogo. Al cuadro de diálogo se le puede asignar uno de los valores de la enumeración DialogResult asignándolo a la propiedad DialogResult de un Button del formulario o estableciendo la propiedad DialogResult del formulario en código. Así, este método devuelve este valor. El valor devuelto se puede usar para determinar el modo de procesar las acciones que se produjeron en el cuadro de diálogo. Por ejemplo, si el cuadro de diálogo se cerró y devolvió el valor DialogResult.Cancel mediante este método, se puede impedir la ejecución del código que sigue a la llamada a ShowDialog.
Cuando un formulario se muestra como un cuadro de diálogo modal, al hacer clic en el botón Cerrar (el botón que tiene una X en la esquina superior derecha del formulario) se oculta el formulario y se establece la propiedad DialogResult en DialogResult.Cancel. A diferencia de los formularios no modales, .NET Framework no llama al método Close cuando el usuario hace clic en el botón Cerrar de un cuadro de diálogo o establece el valor de la propiedad DialogResult. Lo que sucede es que se oculta el formulario, que se puede volver a mostrar sin crear otra instancia del cuadro de diálogo. Puesto que un formulario que se muestra como cuadro de diálogo no se cierra, se debe llamar al método Dispose del formulario cuando la aplicación ya no lo necesite.
Esta versión del método ShowDialog no especifica un formulario o un control como propietario. Cuando se llama a esta versión, la ventana activa actual se convierte en propietaria del cuadro de diálogo. Si desea seleccionar un propietario concreto, use la otra versión de este método.

Ejemplo
En el siguiente ejemplo de código se muestra un formulario como un cuadro de diálogo modal y se evalúa el valor devuelto del cuadro de diálogo antes de determinar si se ha de leer el valor de un control TextBox en el formulario de cuadro de diálogo. En este ejemplo se requiere que se cree un Form denominado testDialog y que contenga un control TextBox denominado TextBox1. Además, se requiere que el código de este ejemplo esté contenido y se llame desde un Form diferente para mostrar testDialog como un cuadro de diálogo modal. En el ejemplo se utiliza la versión de ShowDialog que especifica un propietario para el cuadro de diálogo.
Public Sub ShowMyDialogBox()
Dim testDialog As New Form2()
' Show testDialog as a modal dialog and determine if DialogResult = OK.
If testDialog.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK Then
' Read the contents of testDialog's TextBox.
txtResult.Text = testDialog.TextBox1.Text
Else
txtResult.Text = "Cancelled"
End If
testDialog.Dispose()
End Sub 'ShowMyDialogBox
public void ShowMyDialogBox()
{
Form2 testDialog = new Form2();
// Show testDialog as a modal dialog and determine if DialogResult = OK.
if (testDialog.ShowDialog(this) == DialogResult.OK)
{
// Read the contents of testDialog's TextBox.
this.txtResult.Text = testDialog.TextBox1.Text;
}
else
{
this.txtResult.Text = "Cancelled";
}
testDialog.Dispose();
}
void ShowMyDialogBox()
{
Form2^ testDialog = gcnew Form2;
// Show testDialog as a modal dialog and determine if DialogResult = OK.
if ( testDialog->ShowDialog( this ) == ::DialogResult::OK )
{
// Read the contents of testDialog's TextBox.
this->txtResult->Text = testDialog->TextBox1->Text;
}
else
{
this->txtResult->Text = "Cancelled";
}
delete testDialog;
}
public void ShowMyDialogBox()
{
Form2 testDialog = new Form2();
// Show testDialog as a modal dialog and determine if DialogResult = OK.
if (testDialog.ShowDialog(this).Equals(get_DialogResult().OK)) {
// Read the contents of testDialog's TextBox.
this.txtResult.set_Text(testDialog.TextBox1.get_Text());
}
else {
this.txtResult.set_Text("Cancelled");
}
testDialog.Dispose();
} //ShowMyDialogBox

Plataformas
Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter
Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

Información de versión
.NET Framework
Compatible con: 3.0, 2.0, 1.1, 1.0
.NET Compact Framework
Compatible con: 2.0, 1.0

Vea también