【问题标题】:Cannot use DialogResult无法使用 DialogResult
【发布时间】:2011-09-10 00:47:53
【问题描述】:

我尝试使用DialogResult 来检查MessageboxYesNoCancel。我正在使用以下代码,我认为没有任何问题:

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

但是 Visual Studio 告诉我错误

'System.Windows.Window.DialogResult' 是“属性”,但用作 '类型'

【问题讨论】:

  • 我认为您混淆了 WPF 和 Winforms 代码。查看this 链接了解更多信息。而且我认为您正在寻找MessageBoxResult 而不是DialogResult

标签: c# wpf dialogresult


【解决方案1】:

DialogResult EnumerationWindow.DialogResult Property 之间存在冲突。

要解决此问题,您可以使用枚举的完全限定名称。如下:

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

但是,由于您使用的是 WPF,请使用MessageBoxResult Enumeration 来获取消息的结果:

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

【讨论】:

    【解决方案2】:

    问题是DialogResult 也是表单的一个属性,编译器认为你指的是这个属性。

    您有多种选择:

    • 使用System.Windows.Forms.DialogResult类型的完全限定名
    • 使用var 让编译器找出类型并消除名称冲突

    【讨论】:

      【解决方案3】:

      DialogResult 不是类型,它是属性,你想要MessageBoxResult 类型

      我可以从你没有使用winforms的问题中看出。所以代码会读取,

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

      【讨论】:

        【解决方案4】:

        尝试将dlgResult 声明为var。然后它应该工作

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

        WPF 下的 MessageBox.Show 也确实返回 MessageBoxResult 而不是 DialogResultDialogResult 用于 WindowsForms

        【讨论】:

        • 或者更确切地说,使用var 隐藏问题并避免理解
        【解决方案5】:

        试试 MessageBoxResult

        MessageBox 将返回 MessageBoxResult 枚举值

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

        【讨论】:

          【解决方案6】:
          MessageBoxResult result = MessageBox.Show(
          "Save changes before closing?",
          "Warning",     
          MessageBoxButton.YesNoCancel,
          MessageBoxImage.Question);
          

          然后使用结果检查

          【讨论】:

            猜你喜欢
            • 2010-10-28
            • 2013-05-26
            • 2014-04-16
            • 1970-01-01
            • 1970-01-01
            • 2019-03-22
            • 2012-03-30
            • 1970-01-01
            相关资源
            最近更新 更多