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,展示进度窗体。

  • 相关阅读:
    hdu 1028 Ignatius and the Princess III (n的划分)
    CodeForces
    poj 3254 Corn Fields (状压DP入门)
    HYSBZ 1040 骑士 (基环外向树DP)
    PAT 1071 Speech Patterns (25)
    PAT 1077 Kuchiguse (20)
    PAT 1043 Is It a Binary Search Tree (25)
    PAT 1053 Path of Equal Weight (30)
    c++ 常用标准库
    常见数学问题
  • 原文地址:https://www.cnblogs.com/yzhyingcool/p/12274592.html
Copyright © 2011-2022 走看看