在某個功能實現時要調用某個窗體的某個事件來激發當前功能的某個按鈕,舉例說明:
在利用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)事件(一)。