2010-06-30 69 views
5

我想要得到的对话框的按钮,用户点击......然而,当我使用的DialogResult我得到这个错误C#对话框和DialogResult的

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

我如何使用的DialogResult?

好吧,我已经设法解决它。

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

你能添加一些源,所以我们可以看到你是专门做什么? – JasCav 2010-06-30 15:43:45

回答

3

更新:刚才意识到你正在使用WPF,而不是WinForms。这里是内WPF正确实施的DialogResult的:

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

有它here一个很好的教程。

听起来就像你正在使用表格的DialogResult属性不正确。你应该做一些这样的:

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

你可以找到完整的DialogResult枚举击穿here

+0

这实际上是不正确的。他使用WPF的(或Silverlight的)DialogResult属性 - 这是Windows窗体。查看错误消息的全名。 – 2010-06-30 15:49:45

+0

@里德 - 谢谢你指出,我会更新! – GenericTypeTea 2010-06-30 15:51:16

+0

它没有工作...无法找到类型或命名空间'MyDialog' – sikas 2010-06-30 16:05:59

0

DialogResult是枚举 - 您可以直接与窗体的DialogResult属性进行比较。

1

你需要一个DialogBox吗?或者一个MessageBox可以用于你的目的吗?

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

+0

DialogBox不工作乌鸦,它没有被发现! – sikas 2010-06-30 16:03:22

+0

我想要一个MessageBox作用于用户单击,如果用户单击yes option1执行,如果没有,则执行option2。 – sikas 2010-06-30 16:08:01

+0

我找到了一个解决方案,并将其添加到我的问题。谢谢。 – sikas 2010-07-01 03:23:50

0

如果您正在使用WPF或Silverlight然后DialogResult的是一个布尔值?你可以使用?如果结果为空则提供一个值。

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

我找到了一个解决方案,并将其添加到我的问题。谢谢。 – sikas 2010-07-01 03:23:33

0

您使用WPF的DialogResult属性,这是一个Nullable<bool>,而不是一个枚举。

您需要检查结果像这样:

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

我找到了一个解决方案,并将其添加到我的问题。谢谢 – sikas 2010-07-01 03:22:55

0

C#对话框和DialogResult的

{ 

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

    }