在某个功能实现时要调用某个窗体的某个事件来激发当前功能的某个按钮,举例说明:
在利用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)事件(一)。