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

我怀疑您一直在阅读方法结果所在的WPFOpenFileDialog.ShowDialog文档Nullable<bool>。但是,如果您使用的是Windows FormsOpenFileDialog.ShowDialog,则会返回DialogResult- 您显然无法与bool.

看看DialogResult真正想要做什么。请注意,文档声称:

返回:DialogResult.OK 如果用户在对话框中点击OK;否则,DialogResult.Cancel。

...所以这些应该是您需要考虑的唯一情况。

于 2012-07-23T15:22:35.590 回答
1

DialogResult与为类似 DialogResult.OK定义的值中的一个进行比较,而不是布尔值。

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 回答