有没有办法更改/添加到Windows打开/保存常用对话框以添加额外的功能?
在工作中,我们在服务器上有一个区域,有数百个"作业文件夹" - 数据库应用程序自动创建/管理的普通Windows文件夹,用于存放有关作业的信息(电子邮件/扫描传真/ Word文档/电子表格/照片等)文件夹由工作号命名.
我想用一个组合框来扩展标准的打开/保存对话框,它根据数据库中的标签搜索作业文件夹,这样无论我的用户做什么,他们都可以轻松找到正确的工作文件夹,找到/保存他们的工作
连接到数据库并提供搜索功能是没有问题的,但是有没有办法在对话框中添加一个组合框控件(理想情况下是一个keypress/keydown事件)?
或者创建我自己的对话框并将其调用/代替标准对话框?即从任何应用程序,我的对话框将被调用,允许轻松访问作业文件夹.如果他们处于展望状态,他们可以快速找到一个作业文件夹,如果使用记事本,他们仍然可以轻松找到该文件夹.
这将意味着从任何应用程序中查找作业文件夹的新统一方式.
理想情况下,有人会知道使用VB/VB.net/C#的方式,但我猜,如果可能的话,它可能会是C++.
如何更改代码以获取文件名而不是目录名?openDialog.InitialFilename给我目录名称.
openDialog.FileName给我错误"找不到方法或数据成员".
Private Sub btnEditPhoto_Click()
If (txtImageName > "") Then
Application.FollowHyperlink txtImageName
Else
Dim openDialog As Office.FileDialog
Set openDialog = Application.FileDialog(msoFileDialogFilePicker)
openDialog.Filters.Clear
openDialog.Filters.Add "JPEG Files", "*.jpg"
Dim pickedFile As Boolean
pickedFile = openDialog.Show
If pickedFile Then
txtImageName.SetFocus
txtImageName.Text = openDialog.InitialFileName
End If
End If
End Sub
Run Code Online (Sandbox Code Playgroud) 我的 WPF UI 上有一些按钮,我还需要不时选择文件。我一直注意到奇怪的问题,当我双击文件对话框中的某个项目时,主用户界面上的按钮也会被单击。经过实验,似乎如果您在主 UI 上将文件对话框中的项目与其后面的按钮对齐,然后双击选择文件,它也会单击其后面的按钮。
有没有其他人注意到这一点,或者这只是我的 UI 布局方式的一个奇怪的错误?
wpf user-interface openfiledialog double-click savefiledialog
我有标准的OpenFileDialog
var openFileDialog = new OpenFileDialog
{
DefaultExt = "mpo",
Filter = "Image file |*.mpo",
Multiselect = true,
RestoreDirectory = true,
};
Run Code Online (Sandbox Code Playgroud)
当我尝试使用它在" fujifilm finepix real 3d w1 "照片相机上打开几张照片时,它会触发消息框" 无法从此位置打开多个项目.请尝试选择单个项目. "只打开1个文件即可.
当我尝试从硬盘驱动器或其他可移动设备中选择照片时,一切正常.
有人得到同样的问题吗?
我可以在Android中使用OpenFileDialog吗?我想从OpenFileDialog中选择图像并将图像保存到SQLite数据库和资源文件夹中.我怎么做?
我在Vista/7上注意到,当OpenFileDialog用于某些应用程序(例如MS Word,Visual Studio)时,它还在位置栏中包含应用程序本身,其中包含受支持类型的文档的收藏夹文件夹列表.例如

有没有一种简单的方法可以为您自己的应用程序执行此操作,或者MS Word等是否使用OpenFileDialog的扩展版本,这意味着我需要扩展OpenFileDialog /自己编写以添加此功能?
我有这个代码:
OpenFileDialog dialog = new OpenFileDialog();
dialog.InitialDirectory = GetDataPath(...);
dialog.AutoUpgradeEnabled = false;
dialog.Filter = GetFilter(...);
if (dialog.ShowDialog(this) == DialogResult.OK)
{...}
Run Code Online (Sandbox Code Playgroud)
我希望,在每次运行时,将对话框放在同一文件夹 - GetDataPath(...)文件夹中,但它仍保留在最后选择的文件夹中.
这是正确的行为吗?你知道怎么解决这个问题吗?如果Windows在注册表中保存上次使用的路径,您知道如何找到它吗?
EDIT1:
附:
dialog.AutoUpgradeEnabled = true;
Run Code Online (Sandbox Code Playgroud)
按预期工作......
EDIT2:与此问题相同在Windows 7中获取SaveFileDialog的InitialDirectory属性的任何已知问题?
好的,我有一个OpenFileDialog,我想将初始目录设置为用户的'Download'文件夹.这是一个内部应用程序,因此,我确信用户将使用Windows 7.
var ofd = new OpenFileDialog();
//This doesn't work
ofd.InitialDirectory =
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "Downloads");
//This doesn't work either
ofd.InitialDirectory = @"%USERPROFILE%\Downloads";
ofd.Filter = "Zip Files|*.zip";
ofd.ShowDialog();
txtFooBar.Text = ofd.FileName;
Run Code Online (Sandbox Code Playgroud)
到目前为止我已经尝试了上述内容,但都没有工作 没有抛出异常,它只是没有将初始目录设置为downloads文件夹.
我哪里错了?
谢谢
当我使用OpenFileDialog“打开文件”时,当然我需要获取文件目录及其名称来加载文件。(要加载xml,要访问文件,我需要完整路径。)
opd是打开文件对话框
if (opd.ShowDialog() == true)
{
var names = opd.FileNames;
foreach (string name in names)
{
LoadFile(Path.Combine(Path.GetDirectoryName(name), name));
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何Path.GetDirectoryName通过仅获取字符串来获取文件的路径?
Path.GetDirectoryName(name)
Run Code Online (Sandbox Code Playgroud)
name是 Juststring并且此方法仅通过字符串获取其目录?。计算机内可能有数千个同名文件。
简短问题:在哪里opd 引用?
编辑:
我认为opd.FileNames只需要文件名。(因为方法名称)
我还发现了一些有趣的事情。
LoadFile(Path.Combine(Path.GetDirectoryName(name), name));
Run Code Online (Sandbox Code Playgroud)
这工作正常,因为Path.Combine只会跳过字符串的相同部分。
前任:
string name = @"C:\Users\Default\xml.xml";
string getDirNameResault= Path.GetDirectoryName(name);// this will be C:\Users\Default
Run Code Online (Sandbox Code Playgroud)
所以 Path.Combine 将是
Path.Combine(@"C:\Users\Default", @"C:\Users\Default\xml.xml)
Run Code Online (Sandbox Code Playgroud)
女巫归来"C:\Users\Default\xml.xml"!
为什么要在服务器端显示文件/文件夹对话框?
我正在构建一个打算在本地运行的项目(浏览器中的 Node 服务器端部分和客户端),我希望能够在其中选择路径,将其添加到某个列表或 JSON文件,然后在其中维护一些项目(webpack'ing、读取文件、通过 express 服务等)。
主要只是供个人使用,现在无论如何。
我要求通过 Node 而不是浏览器执行此操作的原因是,我可以以某种方式绕过现代浏览器中的安全隐患,即在选择文件夹时防止在客户端显示完整的本地文件夹路径(从<input>标签)。
不仅如此,我还:
我只需要:
以这个input标签为例:
<input id="open-project" type="file" />
这将导致这种类型的弹出窗口,非常适合深入文件夹、粘贴部分路径以快速导航到您需要的位置、转到您的快速访问/收藏夹等...
但它用于选择 files,没有暴露路径,没有任何有用的传递给服务器。
然而...
如果换成这个...
<input id="open-project" type="file" webkitdirectory directory />
您最终会看到这个可怕的对话框,它假定您要上传文件夹中包含的所有文件。
所以它看起来并不是<input>要走的路。
也许有一个现有的模块可以在服务器端执行此操作?这样我就可以:
或者...
制作一个...浏览器中的树视图...与节点端来回通信以挖掘本地文件系统...
有什么建议?
openfiledialog ×10
c# ×5
.net ×3
path ×2
android ×1
c++ ×1
double-click ×1
javascript ×1
ms-access ×1
multi-select ×1
node.js ×1
vba ×1
windows ×1
winforms ×1
wpf ×1