文件或目录提示是一种简单的 UI 机制,用于提示用户选择文件或目录路径。 提示用户使用自定义对话框选项从本机 OS 创建文件对话框,以适应用户的特定方案。
处理文件或目录选取器提示
本文介绍以下使用文件或目录选取提示的方案:
提示用户选择要打开的单个文件
若要创建文件打开的提示符,请从 ShowOpenFileDialogAsync
对象调用该方法。
ShellExtensibility.ShowOpenFileDialogAsync()
ShowOpenFileDialogAsync
方法采用以下两种参数:
参数 | 类型 | 必选 | DESCRIPTION |
---|---|---|---|
options |
FileDialogOptions |
是的 | 定义用于自定义对话框的文件选取器提示选项。 |
cancellationToken |
CancellationToken |
是的 | 异步操作的 CancellationToken 。 触发时,提示将强制关闭。 |
如果用户关闭或取消对话框, ShowOpenFileDialogAsync
则 null
返回 。
示例:
下面的代码 Command
显示了具有默认对话框选项的文件提示。
public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken cancellationToken)
{
FileDialogOptions options = new();
string? filePath = await this.Extensibility.Shell().ShowOpenFileDialogAsync(options, cancellationToken);
}
提示用户选择要打开的一个或多个文件
在某些情况下,使用户能够一次选择多个文件非常有用,可以使用 ShowOpenMultipleFilesDialogAsync
此方法。
ShellExtensibility.ShowOpenMultipleFilesDialogAsync()
ShowOpenMultipleFilesDialogAsync
方法采用以下两种参数:
参数 | 类型 | 必选 | DESCRIPTION |
---|---|---|---|
options |
FileDialogOptions |
是的 | 定义用于自定义对话框的文件选取器提示选项。 |
cancellationToken |
CancellationToken |
是的 | 异步操作的 CancellationToken 。 触发时,提示将强制关闭。 |
如果用户关闭或取消对话框, ShowOpenMultipleFilesDialogAsync
则 null
返回 。
示例:
下面的代码 Command
显示了具有默认对话框选项的文件提示。
public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken cancellationToken)
{
FileDialogOptions options = new();
IReadOnlyList<string>? filePath = await this.Extensibility.Shell().ShowOpenMultipleFilesDialogAsync(options, cancellationToken);
}
提示用户选择要另存为的文件
提示用户输入文件名以使用 “另存为 ”选项保存,以便他们指定自定义文件名。
ShellExtensibility.ShowSaveAsFileDialogAsync()
ShowSaveAsFileDialogAsync
方法采用以下两种参数:
参数 | 类型 | 必选 | DESCRIPTION |
---|---|---|---|
options |
FileDialogOptions |
是的 | 定义用于自定义对话框的文件选取器提示选项。 |
cancellationToken |
CancellationToken |
是的 | 异步操作的 CancellationToken 。 触发时,提示将强制关闭。 |
如果用户关闭或取消对话框, ShowSaveAsFileDialogAsync
则 null
返回 。
示例:
下面的代码 Command
显示了具有默认对话框选项的文件提示。
public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken cancellationToken)
{
FileDialogOptions options = new();
string? filePath = await this.Extensibility.Shell().ShowSaveAsFileDialogAsync(options, cancellationToken);
}
提示用户选择要打开的目录
若要创建文件打开的提示符,请从 ShowOpenFolderDialogAsync
对象调用该方法。
ShellExtensibility.ShowOpenFolderDialogAsync()
ShowOpenFolderDialogAsync
方法采用以下两种参数:
参数 | 类型 | 必选 | DESCRIPTION |
---|---|---|---|
options |
FolderDialogOptions |
是的 | 定义用于自定义对话框的文件选取器提示选项。 |
cancellationToken |
CancellationToken |
是的 | 异步操作的 CancellationToken 。 触发时,提示将强制关闭。 |
如果用户关闭或取消对话框, ShowOpenFolderDialogAsync
则 null
返回 。
示例:
下面的代码 Command
显示了具有默认对话框选项的文件提示。
public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken cancellationToken)
{
FolderDialogOptions options = new();
string? folderPath = await this.Extensibility.Shell().ShowOpenFolderDialogAsync(options, cancellationToken);
}
使用选项自定义文件或目录提示
可以使用FileDialogOptions
和DialogFilters
FolderDialogOptions
类型来自定义提示。
文件对话框选项
资产 | 类型 | 必选 | DESCRIPTION | 示例 |
---|---|---|---|---|
title |
string |
否 | 对话框的标题。 如果标题是空字符串,则系统会使用默认标题,即 “另存为 ”或 “打开”。 默认值为 string.Empty 。 |
“打开文件” |
initialFileName |
string |
否 | 对话框的输入框中的文件名。 对于打开的文件对话框,文件名必须存在,或者对话框返回错误。 如果传递了无效的文件名,则使用默认值。 默认值为 string.Empty 。 |
“filename.ext” |
filters |
DialogFilters |
否 | 用于对话框的筛选器。 | 请参阅 包含自定义选项的提示示例。 |
DialogFilters
术语 | 类型 | 必选 | DESCRIPTION | 示例: |
---|---|---|---|---|
Filters |
IReadOnlyCollection<DialogFilter> |
是的 | 用于选择或保存文件的筛选器。 | 请参阅 包含自定义选项的提示示例。 |
DefaultFilterIndex |
int |
否 | 用于设置默认选择的筛选器的默认筛选器索引。 默认值为 0 。 |
最小索引是 0 ,最大值是 number of filters - 1 。 |
文件夹对话框选项
资产 | 类型 | 必选 | DESCRIPTION | 示例 |
---|---|---|---|---|
title |
string |
否 | 对话框的标题。 如果标题是空字符串,则系统会使用默认标题,即 “另存为 ”或 “打开”。 默认值为 string.Empty 。 |
“打开文件” |
initialDirectory |
string |
否 | 对话框应打开的目录,该目录应该是绝对路径。 如果 initialDirectory 为空字符串,则初始目录默认为上次打开的目录。 如果没有以前打开的目录,则初始目录默认为根文件夹。 如果 initialDirectory 指定了标志,则会将标志传递到对话框以打开到指定的目录,而不是最后一个打开的目录。 如果传递了无效的目录,则使用默认值。 默认值为 string.Empty 。 |
路径/到/文件夹 |
包含自定义选项的提示示例
文件选取器提示
DialogFilter[] filters = new DialogFilter[]
{
new DialogFilter("Word Files", ".doc", ".docx"),
new DialogFilter("Excel Files", ".xls", ".xlsx"),
new DialogFilter("All Files", ".*"),
};
FileDialogOptions options = new FileDialogOptions()
{
Title = "Choose a File To Open".
InitialDirectory = "absolute/path/to/file",
InitialFileName = "file.txt",
Filters = new DialogFilters(filters)
{
DefaultFilterIndex = 1,
},
};
string? filePath = await Extensibilty.Shell().ShowOpenFileDialogAsync(options, cancellationToken);
目录选择器提示
FolderDialogOptions options = new FolderDialogOptions()
{
Title = "Choose a Folder",
InitialDirectory = "absolute/path/to/folder"
};
string? folderPath = await Extensibilty.Shell().ShowOpenFolderDialogAsync(options, cancellationToken);
相关内容
- 请参阅 FilePickerSample。