1

Visual Studio C# Express で以下のスクリプトを実行すると、行に次のエラー メッセージが表示されます。

if (ofd.ShowDialog() == true): エラー 1 演算子 '==' は型 'System.Windows.Forms.DialogResult' および 'bool' のオペランドに適用できません

どうすればこれを解決できますか?以下のコード:

public override GH_ObjectResponse RespondToMouseDoubleClick(GH_Canvas sender, GH_CanvasMouseEvent e)
{
    System.Windows.Forms.OpenFileDialog ofd = new  System.Windows.Forms.OpenFileDialog();
    ofd.Multiselect = true;

    ofd.Filter = "Data Sources (*.ini)|*.ini*|All Files|*.*";
    if (ofd.ShowDialog() == true)
    {
        string[] filePath = ofd.FileNames;
        string[] safeFilePath = ofd.SafeFileNames;
    }
    return base.RespondToMouseDoubleClick(sender, e);
}
4

3 に答える 3

10

それを次のように置き換えます。

if (ofd.ShowDialog() == DialogResult.OK)

ShowDialogメソッドは、次のメンバーを持つDialogResult列挙を返します。

  • なし
  • わかった
  • キャンセル
  • アボート
  • リトライ
  • 無視
  • はい
  • いいえ
于 2012-07-23T15:21:44.087 に答える
6

メソッドの結果OpenFileDialog.ShowDialogNullable<bool>. ただし、Windows FormsOpenFileDialog.ShowDialogを使用している場合、それは返されますDialogResult- これは明らかに と比較できませんbool

自分が本当にやりたいことは何なのか、自分の目でDialogResult確かめてみてください。ドキュメントが主張していることに注意してください:

戻り値: ユーザーがダイアログ ボックスで [OK] をクリックした場合は DialogResult.OK。それ以外の場合は、DialogResult.Cancel。

... したがって、考慮する必要があるのはこれらのケースだけです。

于 2012-07-23T15:22:35.590 に答える
1

DialogResultブール値ではなく DialogResult.OK のように定義された値の 1 つと比較してください。

if (ofd.ShowDialog() == DialogResult.OK)
{

}

DialogResults の可能な値を以下に示します。必要なものと比較してください。

DialogResult.None
DialogResult.OK
DialogResult.Cancel
DialogResult.Abort
DialogResult.Retry
DialogResult.Ignore
DialogResult.Yes
DialogResult.No
于 2012-07-23T15:20:47.587 に答える