2009-03-01 7 views

Respuesta

33

que asumen que está utilizando Windows Forms ...

un par de maneras.

Para Aceptar: configure AcceptButton en el formulario para el botón Aceptar. Para cancelar: configure el botón Cancelar en el formulario para cancelar.

O bien, puede establecer manualmente los formularios DialogResult en DialogResult.OK o DialogResult.Cancel y luego cerrar el formulario de forma programática.

+0

Aunque no estoy usando los botones Aceptar o Cancelar. ¿Qué pasa si quiero concluir una devolución de aceptación cuando el usuario presiona Intro en un cuadro de texto, y cancelar la devolución cuando el usuario presiona ESC en un cuadro de texto? –

+0

En ese caso, necesitaría interceptar la tecla presionada en el código usando KeyUp, KeyDown o los controladores KeyPress (se me olvida exactamente cuál) y luego establecer DialogResult manualmente y cerrar su formulario. –

+0

Existe una propiedad de un formulario llamado CancelButton y se activa cuando se presiona esc. VS2005 solo me permite asignarlo a un botón real. Mi solución fue crear un botón real y establecer simplemente su x-coord en negativo 500. – Karl

91

Conjunto de DialogResult la forma:

this.DialogResult = DialogResult.OK; 
this.Close(); 

Esto haría que cualquier abridor de que se abrió esta forma con ShowDialog() para obtener el DialogResult dado como resultado.

+0

Gracias por proporcionar el código :) – maximus

+4

Si no me equivoco, la configuración de 'DialogResult' cierra automáticamente la ventana, por lo que la segunda declaración es redundante. –

+4

Estás equivocado. El formulario está realmente oculto, no cerrado "El método Cerrar no se llama automáticamente cuando el usuario hace clic en el botón Cerrar de un cuadro de diálogo o establece el valor de la propiedad DialogResult. En cambio, el formulario está oculto y se puede volver a mostrar sin crear un nuevo instancia del cuadro de diálogo. Debido a este comportamiento, debe llamar al método Dispose del formulario cuando la aplicación ya no lo necesita ". - desde MSDN (https://msdn.microsoft.com/en-us/library/system.windows.forms.form.dialogresult(v=vs.110).aspx) –

3

Directamente, en las propiedades del botón mismo, existe la propiedad DialogResult que se puede establecer en OK/Cancel/Yes/No/etc ... Como han dicho los otros, esto también se puede establecer mediante programación.

En las propiedades del formulario en el que está el botón, establezca la propiedad AcceptButton en su botón. Esto también hará cosas como disparar el botón cuando presionas la tecla enter y resaltar el botón.

Cuestiones relacionadas