2010-06-30 11 views
5

voglio ottenere il pulsante del DialogBox che l'utente fa clic ... eppure quando uso il DialogResult ottengo questo erroreC# DialogBox e DialogResult

'System.Windows.Window.DialogResult' is a 'property' but is used like a 'type' 

Come posso utilizzare il DialogResult ??

Ok, sono riuscito a risolverlo.

MessageBoxResult Result = MessageBox.Show("Message Body", @"Caption/Title", MessageBoxButton.YesNo); 
     switch (Result) 
     { 
      case MessageBoxResult.Yes: 
       MessageBox.Show("Yes Pressed!!"); 
       break; 
      case MessageBoxResult.No: 
       MessageBox.Show("No Pressed!!"); 
       break; 
     } 
+3

si può aggiungere un po 'di origine in modo che possiamo vedere cosa si sta facendo in particolare? – JasCav

risposta

3

Aggiornamento: ho appena realizzato che stai usando WPF, non WinForms. Ecco una corretta implementazione della DialogResult entro WPF:

MyDialog dialog = new MyDialog(); 
bool? dialogResult = dialog.ShowDialog(); 
if (dialogResult.HasValue && dialogResult.Value) 
{ 
    // User clicked OK 
} 
else 
{ 
    // User clicked Cancel" 
} 

C'è un buon tutorial su di esso here.

Sembra che tu stia utilizzando la proprietà DialogResult del modulo in modo errato. Si dovrebbe fare qualcosa di simile a quanto segue:

DialogResult result = Form.DialogResult; 
if (result == DialogResult.Yes) 
{ 
    // Do something 
} 

È possibile trovare l'intera DialogResult ripartizione enumerazione here.

+0

Questo è in realtà non corretto. Sta usando la proprietà DialogResult di WPF (o Silverlight) - questo è per Windows Forms. Vedi il nome completo del messaggio di errore. –

+0

@ Reed- grazie per averlo segnalato, aggiornerò! – GenericTypeTea

+0

non ha funzionato ... il tipo o lo spazio dei nomi 'MyDialog' non è stato trovato – sikas

0

DialogResult è Enum: è possibile confrontare direttamente la proprietà DialogResult del modulo.

1

Avete bisogno di un DialogBox? O un MessageBox funzionerà per i tuoi scopi?

DialogResult dlg = MessageBox.Show("Question User?", 
        "MessageBox Title", 
        MessageBoxButtons.YesNo, 
        MessageBoxIcon.Question); 
      if (dlg == DialogResult.No) 
      { 
       //user changed mind. return 
       return; 
      } 

ecc

+0

DialogBox non funziona Raven, non è stato trovato !! – sikas

+0

Desidero che un MessageBox agisca in base al clic dell'utente, se l'utente fa clic su Sì, l'opzione 1 viene eseguita, se non viene eseguita alcuna opzione 2. – sikas

+0

Ho trovato una soluzione e l'ho aggiunta alla mia domanda. Grazie. – sikas

0

Se si utilizza WPF o Silverlight allora DialogResult è un bool? e puoi usare ?? fornire un valore se il risultato è nullo.

if (myWindow.DialogResult ?? false) 
    Debug.WriteLine("You clicked OK"); 
else 
    Debug.WriteLine("You clicked Cancel"); 
+0

Ho trovato una soluzione e l'ho aggiunta alla mia domanda. Grazie. – sikas

0

Si sta usando la proprietà di WPF DialogResult, che è un Nullable<bool>, non un enumerazione.

È necessario controllare il risultato in questo modo:

bool? dialogResult = dialogBox.ShowDialog(); 

if (dialogResult.HasValue) // Should always have a value, at this point, since the dialogBox.ShowDialog() returned at this point. Will be false until the dialog is closed, however 
{ 
    if (dialogResult.Value) 
    { 
     // User "accepted" the dialog, hitting yes, OK, etc... 
    } 
    else 
    { 
     // User hit "cancel" button 
    } 
} 
+0

Ho trovato una soluzione e l'ho aggiunta alla mia domanda. Grazie – sikas

0

C# DialogBox e DialogResult

{ 

     DialogResult a1 = MessageBox.Show("Test", "Title", MessageBoxButtons.YesNo); 
     if (a1 == DialogResult.Yes) 
      MessageBox.Show("Yes"); 
     else if (a1 == DialogResult.No) 
      MessageBox.Show("No"); 

    }