标签: openfiledialog

从OpenFileDialog获取文件大小?

如何在Openfiledialog中获取当前所选文件的文件大小?

c# openfiledialog

6
推荐指数
1
解决办法
1万
查看次数

您可以将您的应用程序添加到OpenFileDialog中的位置栏吗?

我在Vista/7上注意到,当OpenFileDialog用于某些应用程序(例如MS Word,Visual Studio)时,它还在位置栏中包含应用程序本身,其中包含受支持类型的文档的收藏夹文件夹列表.例如

在此输入图像描述

有没有一种简单的方法可以为您自己的应用程序执行此操作,或者MS Word等是否使用OpenFileDialog的扩展版本,这意味着我需要扩展OpenFileDialog /自己编写以添加此功能?

.net c# openfiledialog visual-studio-2010

6
推荐指数
0
解决办法
460
查看次数

为什么 OpenFileDialog RestoreDirectory 没有实现?

我在 wpf 应用程序中使用 Microsoft.Win32.OpenFileDialog,因为它在此处声明为等效;http://msdn.microsoft.com/en-us/library/ms750559.aspx

我将 RestoreDirectory 属性设置为 true,但它没有任何效果。当我等待该属性时,记录为“此属性未实现”。

那么如何在不自己实现逻辑的情况下完成这项任务呢?

wpf openfiledialog

5
推荐指数
1
解决办法
743
查看次数

在 OpenFileDialog (WindowsAPICodePack) 上设置“我的电脑”位置

我想将InitialDirectorya的属性设置WindowsAPICodePack CommonOpenFileDialog我的计算机位置,我使用等效的CLSIDGUID或这到底是什么,只是我想知道是否存在更本地/安全的方法来正确设置我的计算机位置,我试过这个,但没有奏效:

.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer) 
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的代码:

Dim FolderPicker As New Microsoft.WindowsAPICodePack.Dialogs.CommonOpenFileDialog

With FolderPicker

    .IsFolderPicker = True
    .Title = "Folder Dialog Test"
    .InitialDirectory = "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}" ' My Computer
    .DefaultFileName = "C:\"

End With
Run Code Online (Sandbox Code Playgroud)

更新:

我在 Windows 8 x64 上。

其他特殊文件夹(例如库和桌面)的工作方式如下:

.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) 
Run Code Online (Sandbox Code Playgroud)

.net vb.net openfiledialog winforms windows-api-code-pack

5
推荐指数
1
解决办法
3519
查看次数

OpenFileDialog 不显示

我有这个简单的代码:

private void buttonOpen_Click(object sender, EventArgs e)
{
    if (openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        textBox2.Text = openFileDialog1.FileName;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行程序时,窗体不显示并退出调试模式。

在输出视图中写道:程序 '[4244] openfiledialog.vshost.exe: Managed (v4.0.30319)' 已退出,代码为 1073741855 (0x4000001f)。

我有 Visual Studio 2010 专业版。

编辑:form1.designer.cs

     private void InitializeComponent()
    {
        this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
        this.buttonOpen = new System.Windows.Forms.Button();
        this.textBox1 = new System.Windows.Forms.TextBox();
        this.textBox2 = new System.Windows.Forms.TextBox();
        this.SuspendLayout();
        // 
        // openFileDialog1
        // 
        this.openFileDialog1.FileName = "openFileDialog1";
        // 
        // buttonOpen
        // 
        this.buttonOpen.Location = new System.Drawing.Point(13, 48);
        this.buttonOpen.Name = "buttonOpen";
        this.buttonOpen.Size = new System.Drawing.Size(75, 23);
        this.buttonOpen.TabIndex = …
Run Code Online (Sandbox Code Playgroud)

c# openfiledialog visual-studio-2010 winforms

5
推荐指数
1
解决办法
4358
查看次数

Open/SaveFileDialog 默认选择 CustomPlaces 文件夹

我们正在使用CustomPlacesOpen/SaveFileDialog 的属性向用户显示他们可以使用的各种配置的标准文件夹。

我们现在想要的是让InitialDirectory属性指向创建的CustomPlaces“文件夹”。有没有人能够做到这一点?

我已经阅读了有关FileDialog类(以及子序列 OpenFileDialog 和 SaveFileDialog)、InitialDirectory属性、Environment.SpecialFolder枚举器和KNOWNFOLDERID列表的 MSDN 文章,但都无济于事。
我还尝试将InitialDirectory属性设置为应用程序的名称,以防万一这很神奇。

用于 OpenFileDialog 的代码(目录是 demos atm):

using (OpenFileDialog tempDiag = new OpenFileDialog())
{
  tempDiag.CustomPlaces.Add(@"C:\Temp\");
  tempDiag.CustomPlaces.Add(@"C:\Program Files\");
  tempDiag.ShowDialog();
}
Run Code Online (Sandbox Code Playgroud)

调用时所需的默认选择tempDiag.ShowDialog();

开业时选择的 CustomPlaces

我知道可以通过这篇CodeProject文章中描述的方法完全自定义 XOpenDialog ,但我觉得这对于此时的默认选择来说有点极端。

.net c# openfiledialog savefiledialog

5
推荐指数
0
解决办法
490
查看次数

关闭 OpenFileDialog 会导致应用程序挂起 3-4 秒

在我WPF使用Caliburn.MicroMahApps.Metro框架的应用程序中,我打开OpenFileDialogSystem.Windows.Forms命名空间中的实例。打开和关闭此对话框后,我的应用程序的其余部分挂起大约 3 到 4 秒。使用Microsoft.Win32命名空间时也是如此。

我自己做了一些研究,并提出了一些抱怨同一问题的帖子,他们找到的解决方案有两个:

  1. 快速修复:将ShowHelp属性设置为true
  2. 正确修复:确保它在Single Threaded Apartment模式下运行。

ShowHelp修复程序通过使用非 vista 样式对话框对我有用,但从UXWindows Vista 和更新版本的角度来看,它看起来不正确。对我来说另一件事是确保它处于STA模式下。

WPFSTA默认情况下使用,但我尝试编写自己的主要方法并明确说明[STA]但没有运气。我将以下代码段添加到我的代码中,但输出为State: STA,表明应该没有问题。

Console.WriteLine("State: {0}", System.Threading.Thread.CurrentThread.GetApartmentState());
var dialog = new OpenFileDialog
Run Code Online (Sandbox Code Playgroud)

我也试过OpenFileDialog在一个新STA线程上启动它,虽然它启动并且没有挂起我的应用程序,但它也不再是模态的。我也尝试加入新线程,但关闭后它仍然挂起。

是否存在已知的潜在问题,OpenFileDialog如果有,是否有启动 FileDialogs 的替代方法可以避免这种挂起?

来源ShowHelpSTA评论:

c# wpf multithreading openfiledialog mahapps.metro

5
推荐指数
0
解决办法
471
查看次数

单元测试文件读取方法与 OpenFileDialog c#

我有一个函数,它返回文本文件路径和文件内容:

public static Tuple<string, string> OpenTextFile()
{
    OpenFileDialog openFileDialog = new OpenFileDialog();
    openFileDialog .Filter = "Text |*.txt";

    bool? accept = openFileDialog.ShowDialog();

    if (accept == true)
        return Tuple.Create(File.ReadAllText(openFileDialog.FileName, Encoding.UTF8), openFileDialog.FileName);
    else
        return null;
}
Run Code Online (Sandbox Code Playgroud)

如何单元测试文件读取?是否可以测试对话框显示?

c# unit-testing tuples openfiledialog file-read

5
推荐指数
1
解决办法
3456
查看次数

为什么在控制台应用程序中使用 CommonOpenFileDialog 时会出现此异常?

问题

我正在尝试使用 CommonOpenFileDialog 的文件夹选择器,如本答案中所述。问题是,即使有一个非常精简的示例项目,我在尝试使用 CommonOpenFileDialog 的函数时也会遇到异常ShowDialog()

代码

using Microsoft.WindowsAPICodePack.Dialogs;

namespace DialogTest
{
    class Program
    {
        public static void Main(string[] args)
        {
            CommonOpenFileDialog dialog = new CommonOpenFileDialog();
            dialog.InitialDirectory = "C:\\Users";
            dialog.IsFolderPicker = true;

            CommonFileDialogResult result = dialog.ShowDialog();

            if (result == CommonFileDialogResult.Ok)
            {
                //Do Stuff
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我还与作者 Microsoft 一起使用以下 nuget 包:

  • Microsoft.WindowsAPICodePack-核心
  • Microsoft.WindowsAPICodePack-Shell

例外情况

此代码在 处产生以下异常dialog.ShowDialog();

System.Runtime.InteropServices.COMException was unhandled
  ErrorCode=-2147023116
  HResult=-2147023116
  Message=A null reference pointer was passed to the stub. (Exception from HRESULT: …
Run Code Online (Sandbox Code Playgroud)

c# dialog openfiledialog windows-api-code-pack

5
推荐指数
1
解决办法
3425
查看次数

OpenFileDialog 在超过 260 个字符的路径上返回空字符串(或根本不返回)

我正在编写一个程序,需要从系统上的任何地方读取文件。该程序的某些用户的路径超过 260 个字符的限制。在OpenFileDialog不使用文件超过260个字符的路径。

我试过同时使用System.Windows.Forms.OpenFileDialogMicrosoft.Win32.OpenFileDialog。对于前者,当我导航到并选择文件后单击“打开”时,窗口不会关闭,程序也不会继续。在后者的情况下,当我单击“打开”时窗口将关闭,但路径是一个空字符串。

我已经更新了我电脑上的注册表。我已经编辑了应用程序清单文件。我会尝试将“//?/”字符串添加到我的路径中,但没有要添加到的路径。

var dialog = new OpenFileDialog
{
  // initialize dialog
}

if (dialog.ShowDialog() == DialogResult.OK) // DialogResult.OK replaced with true if using Microsoft.Win32.OpenFileDialog
{
  // if when using System.Windows.Forms.OpenFileDialog, I will never get to this point
  // if using Microsoft.Win32.OpenFileDialog, I will get here but dialog.FileNames will be empty
}
Run Code Online (Sandbox Code Playgroud)

如果我更新了注册表和应用程序清单,我希望上面的代码在长路径和短路径下都能正常工作。我怀疑这只是不受支持,但我所有的搜索都表明人们提供的解决方案要么不起作用,要么仅适用于特定情况。

.net c# openfiledialog max-path

5
推荐指数
1
解决办法
306
查看次数