问题标签 [openfiledialog]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1705 浏览

silverlight - Silverlight OpenFileDialog DoEvents 等效项

在用户选择大文件后,我正在处理它们。我的代码如下所示:

这会冻结 UI,因此我尝试在用户选择文件之前先显示加载消息,以便为他们提供正在发生的视觉提示:

不幸的是,在处理文件时,这仍然会完全冻结 UI。

我发现完美的工作是如果我在文件选择后立即触发 MessageBox。我认为它在后台执行“DoEvents”类型调用以在运行时获取刷新事件/ui 项。

在这种情况下,大文件的处理速度仍然很慢,但会显示加载消息并且屏幕 UI 会同步(我正在做一些其他的事情,例如显示等待光标)。

问题:

Silverlight 没有 DoEvents 功能。除了 MessageBox.Show 之外,我还可以拨打一个电话来获得与同步 UI 和防止 OpenFileDialog 冻结 UI 相同的效果吗?

0 投票
1 回答
322 浏览

c# - C# 中的奇怪循环

注意:我添加了实际的代码片段。只需滚动到结束。

函数在另一个循环中调用。我运行了几次代码并认为它​​运行良好,直到我看到有一次它表现得很奇怪。我为上面的函数提供了一个数组长度为6的函数,预期的输出是这样的:

但是,我得到的输出是这样的:

当我看到该输出时,我在当前循环结束之前退出了执行(它运行了很长时间。)

看起来该函数工作正常(它运行 files.Length 次并在此之后输出结果。)但是,传递给函数的参数在某种程度上是错误的(有趣的是,该函数被多次调用。通常,它应该只运行在这种情况下一次。我的意思是,脚本文件中的行数决定了调用上述函数的次数,并且脚本文件只包含一行。)该参数(文件数组)来自 OpenFileDialog,这意味着我与它无关。我只是将数组传递给函数。

我仍在试图了解导致这种奇怪结果的原因。这种情况只发生过一次,但我仍然需要诊断问题;因为,我会让程序运行几天。它应该可以正常工作。

你对这种胡说八道有什么想法吗?


上述函数的实际代码:

调用函数代码:

脚本文件:

0 投票
3 回答
878 浏览

c++ - 在通用文件对话框中获取当前选择文件的真实名称?

可以在通用对话框的列表视图中获取所选项目的文本。但是无法获得它的 PIDL,如果用户选择隐藏已知扩展名(默认),那么如果没有扩展名或 PIDL,就无法真正判断选择了哪个文件。

所以解决这个问题的可能方法是:

  1. 从标准打开文件对话框中获取 IShellView。底层 IShellView 可以告诉当前选择的 PIDL 是什么。因此,如果我可以简单地获得 IShellView,我会很高兴。不幸的是,我看不到 CDM_xxx 会这样做。而且我无法想到任何可能实现它的东西!:(
  2. 还有什么想法?!

我们过去依赖于这样一个事实,即 Windows 9x、2000 和 XP 版本的通用文件对话框将每个项目的 PIDL 存储在 LVITEM 数据中(最初归功于 Paul DiLascia):

LPCITEMIDLIST pidlItem = (LPCITEMIDLIST)pListCtrl->GetItemData(nItem);

但是,从 Vista 的通用控件及更高版本开始,该技术失败了 :(

有什么想法吗?

编辑:我不仅需要能够获取列表视图中当前选定项目的信息,还需要获取列表视图中所有项目的信息。

EDIT2:我需要深入挖掘的原因:

在我们的应用程序的早期版本中,我们提供了以下功能: (1) 按下自定义按钮“预览”以关闭对话框,但将当前显示在视图中的项目列表按其可见顺序传输到应用程序,以及当前突出显示的索引。必须完全指定此列表 - 查看全部为“J1329192”的 3 个文件(当确实有 3 个文件“J1329192.xyz”“J1329192.xzy”和“J1329192.zyx”[按此顺序)是没有用的。

允许用户在“文件名:”字段中键入部分文件名过滤器,并且通用对话框将仅显示与给定部分过滤器匹配的文件,按用户选择的排序顺序。因此,要准确地向应用报告用户想要预览的内容,我们需要能够从列表视图控件(或公共对话框本身)中查询该信息。

我们还对文件对话框进行了其他增强 - 包括将用户当前选择显示为缩略图的就地预览窗格,以及自定义最近位置界面等。所有这些都是可能的(有很多工作) 在 Vista 之前。发布 Vista 后,我遇到了墙上的墙。目前,我们使用的标准文件对话框只有很少的我们自己的功能,这并不适合客户(功能 X 发生了什么?!)

还有其他增强功能,但这是一个很好的粗略概述。它们都归结为要求“真的,老实说,索引 X 的视图中具体是什么文件?”的知识。而且出于未知的原因——微软似乎并不觉得有必要提供这样的界面。事实上,他们从来没有这样做过。只有通过一些黑客攻击和逆向工程,我们才能弄清楚事情是如何在幕后工作的,并获得所需的信息。是的,这是不受支持的,是的,MS 不可避免地破坏了我们的代码。我真的不怪他们——我确实觉得令人讨厌的是,他们更新的、更漂亮的界面比他们的旧界面封闭得多——而且他们没有提供更多的前期界面——支持的界面——来进行这些对话增强.

0 投票
1 回答
8794 浏览

.net - 在 C#.net 中的 OpenFileDialog 中更改按钮文本

有谁知道如何在 C#.NET 的 Windows.Forms 中的 OpenFileDialog 中更改按钮上的文本?

0 投票
1 回答
581 浏览

visual-studio - 打开文件对话框在 vista 和 2008 envir 中不起作用

我正在使用 Vista。我通过 Visual Studio 2008 安装和部署项目设计了 MSi 文件,在该项目中我添加了一个自定义操作。在自定义操作中,我正在打开 OpenFile 对话框。此打开文件对话框未显示映射的驱动器或网络位置。那么如何使打开文件对话框映射网络驱动器。

0 投票
2 回答
1978 浏览

winforms - OpenFileDialog 始终显示 *.URL(Internet 快捷方式文件)

OpenFileDialog有一个单曲Filter也是DefaultExt。我想知道为什么当对话框打开时,我还会列出所有 Internet 快捷方式(例如,可以获取文件夹的快捷方式,但不能获取 *.URL 文件)。

是否有一些我可以打开的魔法开关,以便将它们包含在显示给用户的列表中?

目前,我必须通过设置来FileOk处理事件处理程序中的条件,如果我检测到用户选择了一个文件(它也不是 100% 的时间工作,一些快捷方式似乎仍在通过过滤器)。不过,首先不让它们进入列表会更好。e.Canceltrue*.URLFileOk

0 投票
4 回答
8044 浏览

delphi - Delphi 7 和 Vista/Windows 7 常用对话框 - 事件不起作用

我正在尝试修改 Delphi 7 Dialogs.pas 以访问较新的 Windows 7 打开/保存对话框(请参阅使用 Delphi 创建 Windows Vista Ready 应用程序)。我可以使用建议的修改来显示对话框;但是,OnFolderChange 和 OnCanClose 等事件不再起作用。

这似乎与将 Flags:= OFN_ENABLEHOOK 更改为 Flags:=0 有关。当 Flags 设置为 0 时,会绕过 TOpenDialog.Wndproc,并且不会捕获相应的 CDN_xxxxxxx 消息。

任何人都可以建议对 D7 Dialogs.pas 进行进一步的代码修改,以显示较新的通用对话框并保持原始控件的事件功能?

谢谢...

0 投票
1 回答
503 浏览

c++ - 调用者是否需要释放通过未记录的 WM_GETISHELLBROWSER (WM_USER+7) 消息获得的 IShellBrowser*?

一些人指出,存在一个未记录的消息,该消息从文件打开和保存对话框的公共对话框 HWND 中检索 IShellBrowser 接口指针。

但是关于该指针是否是 AddRef'd,或者它是否只是返回的原始地址,存在冲突的信息(或没有信息),并且不应该调用 Release()?

0 投票
3 回答
1535 浏览

c# - StreamReader 在 C# 的错误目录中查找文件

我有一个使用 Windows 窗体的程序,在该窗体中,我使用 openFileDialog 在某个目录中打开文件。然后我在不同的函数中使用 StreamReader,并且在我的 big/debug 目录中有第二个文件,我希望 streamReader 打开。但是由于某种原因,在我使用 openFileDialog 打开第一个文件后,StreamReader 会在该目录中查找第二个文件,而不是像往常一样在 bin/debug 中查找。

有谁知道他为什么这样做,我该如何解决?

提前致谢,

格雷格

0 投票
4 回答
536 浏览

.net - 重用 OpenFileDialog

我在每个文本框旁边有 2 个文本框和 2 个按钮 [...]。是否可以根据单击的按钮使用一个 OpenFileDialog 并将 FilePath 传递给相应的文本框?即..如果我单击按钮一个并加载对话框,当我单击对话框上的打开时,它将文件名传递给第一个文本框。