禁止在 win API 包中的 CommonOpenFileDialog 上进行输入验证
本文关键字:输入 验证 CommonOpenFileDialog win API 包中 禁止 | 更新日期: 2023-09-27 18:35:42
这是一个WPF应用程序,具有最新版本的.NET Framework和VS2015在 Win 10 盒子上。
我正在尝试使用Windows API代码包1.1中的"CommonOpenFileDialog"允许用户建立一个文件夹,在其中执行某些操作。文件夹可以是现有文件夹,也可以是用户指定的新文件夹。
如果用户想要创建一个新文件夹,那么我希望他们能够指定通过编辑底部"文件夹:"文本框中的文本来编辑文件夹对话。在此上下文中,对话只是一种手段,通过它导航到要在其中创建新文件夹的文件夹。我的计划是验证我的代码中的输入以检查有效(现有)路径,以及如果路径不存在,只需创建路径即可。
这是代码:
private void test1_folderSelectorDialog ()
{
if (CommonFileDialog.IsPlatformSupported)
{
var folderSelectorDialog = new CommonOpenFileDialog();
folderSelectorDialog.EnsureReadOnly = false;
folderSelectorDialog.IsFolderPicker = true;
folderSelectorDialog.Multiselect = false;
folderSelectorDialog.EnsureValidNames = false;
folderSelectorDialog.EnsurePathExists = false;
folderSelectorDialog.EnsureFileExists = false;
folderSelectorDialog.InitialDirectory
= "C:''My_Initial_Directory";
folderSelectorDialog.Title = "test1_folderSelectorDialog";
if (folderSelectorDialog.ShowDialog() == CommonFileDialogResult.Ok)
TxBx_folder.Text = folderSelectorDialog.FileName;
this.Focus();
}
else
MessageBox.Show ("CommonFileDialog is not supported");
}
当我运行对话框并修改"文件夹:"文本框中的文本时,然后按"选择文件夹",对话框将验证输入并发出弹出对话框,显示以下消息:
"路径不存在。检查路径,然后重试。
请注意,我已经设置了"EnsureValidNames","EnsurePathExists"和"确保文件存在"到"假"。(如果它们不控制对话框验证,那么他们在那里干什么?
我可以右键单击对话框窗口并使用"新建>文件夹"创建一个新文件夹(如果我无法解决此问题,这就是我必须做的),但我宁愿按照我试图的方式去做,因为它看起来很多以这种方式更容易、更直观地做到这一点。
我如何让愚蠢的东西变得 shaddup 并接受输入而无需对它做出判断?
谢谢!
如果您希望用户仅选择文件夹,则以下代码就足够了
CommonOpenFileDialog dialog = new CommonOpenFileDialog()
dialog.IsFolderPicker = true
if (dialog.ShowDialog() == CommonFileDialogResult.Ok)
{
filesPath = dialog.FileName
}
我相信下面的东西不是必需的
folderSelectorDialog.Multiselect = false
folderSelectorDialog.EnsureValidNames = false
folderSelectorDialog.EnsurePathExists = false
folderSelectorDialog.EnsureFileExists = false