繁体   English   中英

无法导入Microsoft.win32.OpenFileDialog

[英]Cannot import Microsoft.win32.OpenFileDialog

我无法使用Win32 OpenFileDialog类

我尝试了下面的示例代码,我将这些示例代码直接从Microsoft文档复制粘贴到了我的方法中,但出现了错误CS0246,因为编译器找不到OpenFileDialog。

我试图添加对Win32的引用,但无处可寻。

顺便说一句,我确实尝试过使用.NET OpenFileDialog和FolderBrowserDialog类,但是它们无法打开带有开始位置的文件夹,并且该选项对于我的应用程序是绝对必要的。

我做错了什么 ?

这是我的代码。

// Configure open file dialog box
Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
dlg.FileName = "Document"; // Default file name
dlg.DefaultExt = ".txt"; // Default file extension
dlg.Filter = "Text documents (.txt)|*.txt"; // Filter files by extension

// Show open file dialog box
Nullable<bool> result = dlg.ShowDialog();

// Process open file dialog box results
if (result == true)
{
    // Open document
    string filename = dlg.FileName;
}

编辑:问题已解决(以下解决方案)

该错误来自表单设计器。 最初,我在表单中删除了FolderBrowserDialog对象。 默认情况下,Visual Studio 2015创建一个RootFolder设置为Desktop的对象。 现在,即使将SelectedPath设置为目标文件夹,FolderBrowserDialog仍将代替它打开桌面文件夹。

因此,我在事件处理程序中实例化了FolderBrowserDialog对象,并将SelectedPath设置为目标文件夹,而未设置RootFolder。 现在它就像一种魅力。

private void B_Browse_Click(object sender, EventArgs e)
{
        FolderBrowserDialog fbd = new FolderBrowserDialog();
        fbd.SelectedPath = MyTargetFolder;
        DialogResult result = fbd.ShowDialog();
        // do stuff
}    

谢谢大家,祝你有美好的一天:)

对于WinForms,您应该使用System.Windows.Forms.OpenFileDialog对象。

您可以使用FolderBrowseDialog设置开始文件夹,问题是树形视图不会滚动到该文件夹​​,请参见参考的SO问题。

为什么FolderBrowserDialog对话框无法滚动到所选文件夹?

        FolderBrowserDialog fbd = new FolderBrowserDialog();
        fbd.RootFolder = Environment.SpecialFolder.MyComputer;
        fbd.SelectedPath = @"C:\SomeFolder\";
        fbd.ShowDialog();

确保using System.Windows.Forms语句。

然后,这真的很容易:

OpenFileDialog dlg = new OpenFileDialog();
dlg.FileName = "Document";
dlg.DefaultExt = ".txt";
dlg.Filter = "Text documents (.txt)|*.txt";


Nullable<bool> result = dlg.ShowDialog(); 
// I get an error on this "cannot implicitly convert"
DialogResult result = dlg.ShowDialog();


if (result == true) //doesn't work with DialogResult
{
string filename = dlg.FileName;
}

老实说,这有很多问题。 看到这是另一篇有关堆栈的文章。 希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM