C#错误:操作员“==”不能被应用于类型“System.Windows.Forms.DialogRe

2019-10-17 01:37发布

在Visual Studio的C#快递,当我运行下面的脚本,我上线说出以下错误信息:

如果(ofd.ShowDialog()== TRUE):错误1操作“==”不能被应用于类型“System.Windows.Forms.DialogResult”和“布尔”的操作数

我怎么能解决这个问题? 下面的代码:

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);
}

Answer 1:

我怀疑你已经阅读WPF OpenFileDialog.ShowDialog文档 ,其中方法的结果是Nullable<bool> 。 但是,如果你使用Windows窗体OpenFileDialog.ShowDialog ,返回DialogResult -这显然你不能比拟的bool

看一看DialogResult ,看看你真正想做的事。 请注意,文件称:

返回:DialogResult.OK如果用户单击对话框中的确定; 否则,DialogResult.Cancel。

...所以这些应该只有你需要考虑的情况。



Answer 2:

其替换为:

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

ShowDialog方法返回的DialogResult枚举,这已以下成员:

  • 没有
  • 取消
  • 退出
  • 重试
  • 忽视
  • 没有


Answer 3:

与上定义的值进行比较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


文章来源: C# error: Operator '==' cannot be applied to operands of type 'System.Windows.Forms.DialogResult' and 'bool'