C# 實現委託(delegate)事件(二)

在某個功能實現時要調用某個窗體的某個事件來激發當前功能的某個按鈕,舉例說明:

在利用ArcEngine進行二次開發時,當圖層樹上的某一圖層關閉後,對應的打開的屬性表也要進行關閉,此時就需要用到委託和事件。

具體實現如下:

1. 定義全局的委託事件

    public delegate void QueryFormCloseEventHandler(string sLayerUID);
    public class QueryEvent
    {
        private static QueryFormCloseEventHandler queryFormCloseEventHandler;
        public static event QueryFormCloseEventHandler queryFormCloseEvent
        {
            add
            {
                if (queryFormCloseEventHandler == null || !(queryFormCloseEventHandler.GetInvocationList().Contains(value)))
                {
                    queryFormCloseEventHandler += value;
                }
            }
            remove
            {
                queryFormCloseEventHandler -= value;
            }
        }

        public static void FormClosed(string sLayerUID)
        {
            if (queryFormCloseEventHandler != null)
            {
                queryFormCloseEventHandler(sLayerUID);
            }
        }
    }

2. 在屬性表窗體中調用該事件,調用方法如下所示:

這裏寫圖片描述

3. 在圖層右側事件中調用該事件的窗體關閉方法:

這裏寫圖片描述

4.此時,右側圖層移除後,打開的屬性表的窗口也會隨之被關閉。

注: 有關委託和實現可以查看本人寫的C# 實現委託(delegate)事件(一)

發佈了53 篇原創文章 · 獲贊 29 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章