【问题标题】:Error using DialogResult.OK in OpenFileDialog在 OpenFileDialog 中使用 DialogResult.OK 时出错
【发布时间】:2017-08-09 12:47:52
【问题描述】:

我从我的其他项目之一复制了一个 OpenFileDialog,但它不适用于新项目。

 OpenFileDialog open = new OpenFileDialog();
        open.Filter = "Binary|*.bin";
        open.RestoreDirectory = true;
        open.Multiselect = false;
        try
        {
            if (open.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
               //some code
            }
        }...

错误提示我缺少参考。 所以我尝试配置引用,但是当我单击 System.Windows.Forms 的复选框时,它说我无法使用它,因为 ActiveX-Library 是从 .NET-Assembly 导入的,并且无法添加。在我之前的项目中,我添加了参考,一切正常。如何添加对 .NET-Assembly 的引用?

奖励:为什么会这样?是否有任何理由在 VisualStudio 中阻止添加引用?

-Edit-它是一个 WPF 应用程序,我正在使用带有 .NET Framework 4.5.2 的 VisualStudio 2017

【问题讨论】:

  • 项目类型?框架版本?
  • 可能是您从 winfrom 应用程序复制。走 wpf 方式wpf-tutorial.com/dialogs/the-openfiledialog
  • 不,我检查过了。这是同一个应用程序。 @Harsh
  • 那你为什么要引用windows form open.ShowDialog() == System.Windows.Forms.DialogResult.OK
  • @Thomas 他的意思是,在 WinForms 中,它使用 DialogResult,但在 WPF 中,它没有,并且需要一个布尔值来检查对话框是否存在,因为 WPF从您用于对话的Window 对象传回。因此,即使您可以在 WPF 中引用 System.Windows.Forms,也没关系,因为 Window 对象没有传回 DialogResult,而是一个布尔值,表示它是活着的。

标签: c# .net wpf openfiledialog


【解决方案1】:

尝试将 winform 引用替换为 false。

改变这个

if (open.ShowDialog() == System.Windows.Forms.DialogResult.OK)

到这里

if (open.ShowDialog() == true)

【讨论】:

  • 工作正常。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-21
  • 1970-01-01
  • 1970-01-01
  • 2010-09-27
  • 2011-04-29
  • 2014-06-25
相关资源
最近更新 更多