zoukankan      html  css  js  c++  java
  • 歪兔工具条(YToolsforArcMap)简介之ArcMap插件进度消息通知窗口的实现 C#

    一个简单ArcMap插件进度消息通知窗口的实现方法。

    一个进度窗体

    ①搞一个label,塞进一个gif动图,让窗体Show出来的时候一直转啊转啊转;

    ②搞一个label写点提示文字“请稍等”啥的;再搞一个label用来显示进度。

    进度Form的代码如下:

    一个进度窗体管理器

    ProgressFormManger

    代码如下:

    进度消息的传递机制

    一个委托   

    public delegate void ProgressChangedEventHandler(object o,ProgressChangedEventArgs e);

    一个接口+一个事件

     public interface IProgress
        {
            event ProgressChangedEventHandler ProgressChangedEvent;
        }

    一个进度消息结构体

        /// <summary>
        /// 进度消息结构体。
        /// </summary>
        public struct ProgressChangedEventArgs
        {
            /// <summary>
            /// 当前处理进度
            /// </summary>
            public int CurrentIndex { get; set; }
            /// <summary>
            /// 总的要素个数
            /// </summary>
            public int FeatureCount { get; set; }
            /// <summary>
            /// 文字描述的进度消息
            /// </summary>
            public string Message { get; set; }
        }

    一个进度消息发送器

    消息通知的发起

    工作类继承IProgress接口,实现ProgressChangedEvent事件属性

     工作类继承ProgressMessagesSender类,实现OnProgressChange方法。

    OnProgressChange(checkProgressChangedEventHandler,index, featureCount);
    OnProgressChange(this.progressChangeEventHandler, ">>> 创建待处理要素类的副本。");

    进度窗口的更新

    定义IProgressSetter接口、扩展方法

    工具窗口继承IProgressSetter接口

    通过GetArcMapRECT方法获取ArcMap窗口四角坐标的结构体,用以实例化进度窗口时确定其位置。

    ShowProgressForm方法传入继承IProgress接口的“处理器”,进度消息窗口实例progressForm,进度消息窗口管理器实例manger,展示进度窗体。

  • 相关阅读:
    在IE浏览器中url传参长度问题
    Linq语句的认识
    关于选择表达式以及判断语句的书写,可以让代码更加的清晰。
    C#/对线程的认识
    Js/如何修改easyui修饰的input的val值
    Java Lambda表达式中的this
    MySQL USING关键词/USING()函数的使用
    复杂SQL查询
    Java 修饰符
    Git:idea中将当前分支修改的内容提交到其他分支上
  • 原文地址:https://www.cnblogs.com/yzhyingcool/p/12274592.html
Copyright © 2011-2022 走看看