【ArcGIS Pro二次开发】(4):ArcGIS Pro封装的窗体控件

在ArcGIS Pro,有一类窗体控件是系统已经封装好的,比如消息框、提醒框等。下面通过代码来学习一下。

新建一个项目,命名为【ProWindow】,添加5个按钮,命名为【Show_MessageBox、Show_NoticeBox、Show_OpenDialog、Show_SaveDialog和Show_ProgressDialog】,分别控制5种封装窗体控件的演示,如下图所示:

【ArcGIS Pro二次开发】(4):ArcGIS Pro封装的窗体控件_第1张图片


一、消息框

消息框是最简单的一种窗体,广泛用用于提示信息,在开发过程中也经常会用到。

消息框一般情况下只有【消息文本和标题文本】2个参数。

修改【Show_MessageBox.cs】的OnClick事件如下:

        protected override void OnClick()
        {
            // 第1个参数:消息文本。第2个参数:标题文本。
            System.Windows.MessageBox.Show("这是一个消息文本!!!!!!!!", "提示框");
        }

演示结果:

【ArcGIS Pro二次开发】(4):ArcGIS Pro封装的窗体控件_第2张图片 


二、提醒框

提醒框一般在提醒错误的情形中使用。

提醒框的参数也比较简单,一般比消息框会多一个警示图片。

修改【Show_NoticeBox.cs】的OnClick事件如下:

        protected override void OnClick()
        {
            Notification notification = new Notification();
            notification.Title = "重要提醒";           //提醒框标题
            notification.Message = "这是一个提醒文本###";         //提醒内容
            notification.ImageUrl = @"file:///D:\【软件资料】\GIS相关\ArcGIS Pro二次开发工具\ProWindow\Images\GB.png";      //图片路径
            FrameworkApplication.AddNotification(notification);
        }

演示结果:


三、打开文件对话框

打开文件对话框一般用于从本地电脑中选择文件并打开。

重要参数有2个,【MultiSelect】确定是否可以多选文件,【Filter】类型筛选,可以选择【Files_All、GeodatabaseItems_All、Projects、TextFiles】等类型的数据。

修改【Show_OpenDialog.cs】的OnClick事件如下:

        protected override void OnClick()
        {
            OpenItemDialog openDlg = new OpenItemDialog()
            {
                Title = "选择一个要素",      //打开对话框标题
                MultiSelect = false,          //是否可以多选
                Filter = ItemFilters.GeodatabaseItems_All,       //类型筛选
            };
            //打开对话框
            bool? ok = openDlg.ShowDialog();
            //如果没有选择内容,则返回
            if (!ok.HasValue || openDlg.Items.Count() == 0)
                return;   
            //如果有选择内容,返回选择的内容
            var item = openDlg.Items.First();
            //显示返回要素的路径
            MessageBox.Show("要素路径:" + item.Path, "你所选择的要素");
        }

如果有选择的内容,则用消息框提示选择内容的路径。演示结果:

【ArcGIS Pro二次开发】(4):ArcGIS Pro封装的窗体控件_第3张图片

【ArcGIS Pro二次开发】(4):ArcGIS Pro封装的窗体控件_第4张图片


四、保存文件对话框

保存文件对话框和打开文件对话框类似。

重要参数比打开文件对话框少了【MultiSelect】,因为你不可能同时保存为多个文件。

修改【Show_SaveDialog.cs】的OnClick事件如下:

        protected override void OnClick()
        {
            SaveItemDialog saveDlg = new SaveItemDialog()
            {
                Title = "保存为",      //打开对话框标题
                Filter = ItemFilters.GeodatabaseItems_All,       //类型筛选
            };
            //打开对话框
            bool? ok = saveDlg.ShowDialog();
            //如果没有选择内容,则返回
            if (!ok.HasValue)
                return;
            //如果有选择内容,显示返回要素的路径
            MessageBox.Show("要素路径:" + saveDlg.FilePath, "你所保存的要素");
        }

如果有保存的内容,则用消息框提示选择保存内容的路径。演示结果:

【ArcGIS Pro二次开发】(4):ArcGIS Pro封装的窗体控件_第5张图片

【ArcGIS Pro二次开发】(4):ArcGIS Pro封装的窗体控件_第6张图片


五、进度条

进度条一般配合别的进程一起使用,表示该进程的运行进度。

这里引用了一个系统自带的工具【management.CopyFeatures】,配合进度条。当工具运行时,进度条显示,工具运行结束,进度条关闭。

修改【Show_ProgressDialog.cs】的OnClick事件如下:

        protected override async void OnClick()
        {
            var progDlg = new ProgressDialog("进度条", "取消", 100, true);
            progDlg.Show();

            var progSrc = new CancelableProgressorSource(progDlg);

            // 为要调用的工具准备好参数
            string input_data = @"C:\Users\Administrator\Documents\ArcGIS\Projects\Test\Test.gdb\年度变更";
            string out_workspace = Project.Current.DefaultGeodatabasePath;
            string out_data = System.IO.Path.Combine(out_workspace, "年度变更2");

            // 工具参数
            var parameters = Geoprocessing.MakeValueArray(input_data, out_data);

            // 调用工具【management.CopyFeatures】
            await Geoprocessing.ExecuteToolAsync("management.CopyFeatures", parameters,
                null, new CancelableProgressorSource(progDlg).Progressor, GPExecuteToolFlags.Default);

            // 工具运行完毕后关闭进度条
            progDlg.Hide();
        }

演示结果:

【ArcGIS Pro二次开发】(4):ArcGIS Pro封装的窗体控件_第7张图片

当要素复制结束时,进度条自动关闭。


六、工程文件分享

以上就是5个窗体控件的小实例演示。

最后,放上工程文件的链接:

ProWindowicon-default.png?t=N176https://pan.baidu.com/s/1TmpO35SICMg__9SHvXe6wA?pwd=x7rj

你可能感兴趣的:(ArcGIS,Pro,SDK,ArcGIS,c#,arcgis,visual,studio)