Introduction of crooked rabbit toolbar (YToolsforArcMap) ArcMap Plug-message notification achieve progress window

A simple ArcMap Plug-progress message informs the implementation of the window.

A progress window

① engage in a label, into a gif action figure, so that the form has been transferred Show came out ah ah turn;

② to write out a label prompt text "Please wait" Han; and then engage in a label to display the progress.

Progress Form code is as follows:

 

 

A progress window manager

ProgressFormManger

code show as below:

 

 

Progress message passing mechanism

A delegate   

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

An interface + event

 public interface IProgress
    {
        event ProgressChangedEventHandler ProgressChangedEvent;
    }

A progress message structure

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

 

Guess you like

Origin www.cnblogs.com/yzhyingcool/p/12274592.html