ArcGIS中Add-ins编程模式

1、同一Add-in中组件之间的交互

创建一个插件,往往需要各个组件能够相互交互。例如,通过一个按钮(button)的事件触发一些信息显示在浮动窗口(dockwindow)中。Add-in提供了一种很直观的编程方式,只需要相应组件类实现过去组件引用的静态方法,在其他组件中调用该方法以实现交互。代码如下:

[C#]

public class MainExt: ESRI.ArcGIS.Desktop.AddIns.Extension
{
private static MainExt s_extension;

public MainExt()
{
s_extension
= this;
}

internal static MainExt GetExtension()
{
// Extension loads just in time, call FindExtension to load it.
if (s_extension == null)
{
UID extID
= new UIDClass();
extID.Value
= ThisAddIn.IDs.MainExt;
ArcMap.Application.FindExtensionByCLSID(extID);
}
return s_extension;
}

internal void DoWork()
{
System.Windows.Forms.MessageBox.Show(
"Do work");
}
}
protected override void OnClick()
{
MainExt mainExt
= MainExt.GetExtension();
mainExt.DoWork();
}

首先,Extension类型组件MainExt类实现了静态方法GetExtension,然后在其他组件中通过GetExtension获取引用,然后调用组件的相关方法

2、静态方法AddIn.FromID

静态方法AddIn.FromID也可以通过add-in ID获取add-in对象的引用。

[C#]

protected override void OnClick()
{
var ext
= AddIn.FromID < Addin1Ext > (ThisAddIn.IDs.Addin1Ext);
ext.MyCustomMethod();
}

3、extension对象的使用

良好编程习惯是应用一个中心对象来存储对象的状态和管理组件之间的交互,Extension对象就比较适合充当这一角色。

 
使能和检查控件状态

通过OnUpdate()方法更新和检查控件的状态

[C#]

protected override void OnUpdate()
{
this.Enabled = m_enabled;
}

void mapEvents_SelectionChanged()
{
m_enabled
= m_focusMap.SelectionCount > 0;
}



上面的代码通过mapEvents_SelectionChanged事件获取实时状态,并通过OnUpdate()方法修改控件状态

转载于:https://www.cnblogs.com/xmwang/archive/2011/09/19/2181820.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值