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 に答える