5

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

public static bool? ShowSettingsDialogFor(ICustomCustomer)
{
   if (cust is BasicCustomer)
   {
      return (new BCustomerSettingsDialog()).ShowDialog();
   }
}

我收到编译错误消息

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

4

2 回答 2

11

将其更改为

return (new BCustomerSettingsDialog()).ShowDialog() == DialogResult.OK;
于 2013-07-11T09:40:54.827 回答
7

原因是,在 Windows 窗体中,该ShowDialog方法返回一个DialogResult枚举值。可能值的范围取决于您有哪些可用的按钮,它们的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.")
      }
   }
}
于 2013-07-11T09:41:18.487 回答