2011-06-07 29 views
9

Intenté usar DialogResult para marcar MessageboxSíNoCancel. Estoy usando el siguiente código, que no veo ningún problema con:No se puede usar DialogResult

DialogResult dlgResult = MessageBox.Show(
    "Save changes before closing?", 
    "Warning", 
    MessageBoxButton.YesNoCancel, 
    MessageBoxImage.Question); 

Pero Visual Studio me tira error diciendo

'System.Windows.Window.DialogResult' es una 'propiedad', pero se utiliza como un 'tipo'

+7

Creo que eres mezcla de WPF y código de Winforms. Compruebe [esto] (http: //marlongrech.wordpress.com/2008/05/28/wpf-dialogs-and-dialogresult /) enlace para más información. Y creo que estás buscando 'MessageBoxResult' en lugar de' DialogResult'. –

Respuesta

10

Existe un conflicto aquí entre DialogResult Enumeration y Window.DialogResult Property.

Para resolver este problema, puede utilizar el nombre totalmente calificado de la enumuración. Como el siguiente:

System.Windows.Forms.DialogResult dlgResult = ... 

Sin embargo, dado que está utilizando WPF, utilice MessageBoxResult Enumeration para obtener el resultado del mensaje:

MessageBoxResult result = 
    MessageBox.Show("Would you like to see the simple version?", 
    "MessageBox Example", MessageBoxButton.OKCancel); 
+0

KMC no está utilizando winforms – Jodrell

+0

@Jodrell: aplicado ... –

1

intentaremos declarar como dlgResultvar. Entonces debería funcionar

var dlgResult = 
     MessageBox.Show("Save changes before closing?", 
      "Warning", MessageBoxButton.YesNoCancel, MessageBoxImage.Question); 

también MessageBox.Show bajo WPF no volver MessageBoxResult y no DialogResult. DialogResult se utiliza en WindowsForms.

+5

o más bien, use 'var' para ocultar un problema y evite tener que entender – Jodrell

+0

@Akram Shahda, buena edición – Jodrell

1

El problema es DialogResult es también una característica de la forma y el compilador cree que está refiriéndose a esta propiedad.

Usted tiene varias opciones aquí:

  • Usar el nombre completo del tipo System.Windows.Forms.DialogResult
  • Uso var dejar que la cifra compilador el tipo y deshacerse de la colisión de nombres
+0

KMC no está utilizando winforms – Jodrell

1

DialogResult no es un tipo, es una propiedad, desea el tipo MessageBoxResult

Puedo ver en la pregunta que no estás usando winforms. Así que el código sería el siguiente,

MessageBoxResult result = MessageBox.Show(
    "Save changes before closing?", 
    "Warning",  
    MessageBoxButton.YesNoCancel, 
    MessageBoxImage.Question); 
1

sólo tratar con MessageBoxResult

de mensaje volverá MessageBoxResult enumeración valora

  MessageBoxResult dlgResult = MessageBox.Show("Save changes before closing?","Warning", MessageBoxButton.YesNoCancel, MessageBoxImage.Question); 
     Console.WriteLine(dlgResult); 
1
MessageBoxResult result = MessageBox.Show(
"Save changes before closing?", 
"Warning",  
MessageBoxButton.YesNoCancel, 
MessageBoxImage.Question); 

luego usar resultado para comprobar

Cuestiones relacionadas