歪兔工具條(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,展示進度窗體。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM