C#错误:运算符'=='无法应用于'System.Windows.Forms.DialogResult'和'bool'类型的操作数

Art*_*ani 1 c# forms visual-studio-2010

在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);
}
Run Code Online (Sandbox Code Playgroud)

Zbi*_*iew 9

替换为:

if (ofd.ShowDialog() == DialogResult.OK)
Run Code Online (Sandbox Code Playgroud)

ShowDialog方法返回DialogResult枚举,其中包含以下成员:

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


Jon*_*eet 5

我怀疑你一直在阅读方法结果所在的WPF OpenFileDialog.ShowDialog文档Nullable<bool>.但是,如果您使用的是Windows窗体OpenFileDialog.ShowDialog,则返回DialogResult- 您无法与之比较bool.

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

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

......所以那些应该是你需要考虑的唯一案例.