在使用【OpenItemDialog】打开数据时,其中一个重要的属性【Filter】,可用于筛选要打开的数据。示例代码如下:
// 打开文件对话框
OpenItemDialog dlg = new OpenItemDialog()
{
Title = "选择要打开的文本文件",
Filter = ItemFilters.Databases,
MultiSelect = false,
};
ArcGIS Pro SDK中提供了多种筛选类型,基本可以满足正常需求,具体如下:
【TextFiles】:文本文件(TXT、CSV、TAB)
【Rasters】:栅格文件
【Shapefiles】:SHP文件
【TinDatasets】:TIN数据集
【Tables_All】:表
【Annotation】:注记数据集
【Cad】:Cad数据
【FeatureClasses_All】:要素类
【FeatureDatasets_All】:要素数据集
【Files_All】:所有数据文件(不包括数据库、文件夹等工作空间文件)
【Folders】:文件夹
【Workspaces_All】:工作空间
【GeodatabaseItems_All】:地理数据库要素(包括要素类、要素数据集、栅格等)
【Geodatabases】:地理数据库(包括要素类、要素数据集等,不包括栅格)
【Databases】:数据库文件
【Layers_AllFileTypes】:图层文件和包
【Projects】:工程文件(APRX、PPKX)
【Maps_All】:地图(所有类型)
【Project_Templates】:工程模板(APTX)
【StyleFiles】:样式文件(STYLX)
【Toolboxes】:工具箱
【Tools】:工具
【Kml】:Kml数据
【Packages】:ArcGIS Desktop包
【Composite_AddToMap】:可以添加到Map中的多种文件格式(包括图层文件和包、地理数据库项目、Web图层和服务、栅格、shape、KML、KMZ、CAD、表、视频文件、NetCDF)
【Composite_AddToStereoMap】:可以添加到StereoMap中的几种文件格式(包括地理数据库项目、Web图层和服务、shape)
【Composite_ElevationSource】:带有高程值的数据(包括高程表面、高程图层、影像图层和服务、WCS动态图层和服务、栅格、TIN、图层文件LYR和LYRX)
【Composite_Maps_Import】:可以导入地图的一些文件和包(包括地图文档MXD、3DD、SXD、地图包MPK、MMPK、地图文件MAPX、布局文件PAGX、报表文件RPTX)
【Dimensions】:尺寸数据集
【Locators_AllTypes】:定位器
【TaskFiles】:任务文件(ESRITASKS)
还有一些文件类型是以上不能满足的,例如微软的Excel、Word文件等,这时候就需要用【OpenFileDialog】,它可以按后缀名来自定义筛选的文件类型。示例代码如下:
// 定义打开文件对话框
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Excel 文档 (*.xls)|*.xls";
openFileDialog.Multiselect = false;
openFileDialog.RestoreDirectory = true;
这里的Filter格式为"提示词|后缀名"。
如上面的例子,【Excel 文档 (*.xls)】是要显示的筛选提示词,【*.xls】是要筛选的后缀名。
显示结果如下:
如果你想筛选多种后缀名的文件,可以用【;】并列输入:
openFileDialog.Filter = "Excel 文档 (*.xls;*.xlsx)|*.xls;*.xlsx";
显示结果如下: