C# 无法隐式地从对话框结果转换为bool

C# 无法隐式地从对话框结果转换为bool,c#,.net,winforms,C#,.net,Winforms,我试图将代码从wpf复制到winforms(此代码在wpf中工作) 我收到编译错误消息 无法将类型“System.Windows.Forms.DialogResult”隐式转换为 “布尔?” 换成 return (new BCustomerSettingsDialog()).ShowDialog() == DialogResult.OK; 原因是,在Windows窗体中,该方法返回枚举值。可能值的范围取决于可用的按钮,它们的bool?转换可能取决于它们在应用程序中的含义。以下是一些处理少数情况

我试图将代码从wpf复制到winforms(此代码在wpf中工作)

我收到编译错误消息

无法将类型“System.Windows.Forms.DialogResult”隐式转换为 “布尔?”

换成

return (new BCustomerSettingsDialog()).ShowDialog() == DialogResult.OK;

原因是,在Windows窗体中,该方法返回枚举值。可能值的范围取决于可用的按钮,它们的
bool?
转换可能取决于它们在应用程序中的含义。以下是一些处理少数情况的通用逻辑:

public static bool? ShowSettingsDialogFor(ICustomCustomer)
{
   if (cust is BasicCustomer)
   {
      DialogResult result = (new BCustomerSettingsDialog()).ShowDialog();

      switch (result)
      {
          case DialogResult.OK:
          case DialogResult.Yes:
              return true;

          case DialogResult.No:
          case DialogResult.Abort:
              return false;

          case DialogResult.None:
          case DialogResult.Cancel:
              return null;

          default:
              throw new ApplicationException("Unexpected dialog result.")
      }
   }
}

为什么要返回
对话框结果
?错误消息清楚地表明:您将boolean定义为此方法的返回值,但返回的是DialogResult的实例。我勒个去?显然,您可能需要使用
DialogResult
枚举来返回布尔值。
public static bool? ShowSettingsDialogFor(ICustomCustomer)
{
   if (cust is BasicCustomer)
   {
      DialogResult result = (new BCustomerSettingsDialog()).ShowDialog();

      switch (result)
      {
          case DialogResult.OK:
          case DialogResult.Yes:
              return true;

          case DialogResult.No:
          case DialogResult.Abort:
              return false;

          case DialogResult.None:
          case DialogResult.Cancel:
              return null;

          default:
              throw new ApplicationException("Unexpected dialog result.")
      }
   }
}