简单轻量级的桌面自定义扩展开发方法Add-in
如何使用C#编写可扩展的桌面应用程序

如何使用C#编写可扩展的桌面应用程序C#(C Sharp)是一种广泛应用于开发Microsoft Windows平台的对象导向编程语言。
它是一个强大且灵活的编程语言,适用于各种应用程序开发,包括可扩展的桌面应用程序。
在本文中,我们将探讨如何使用C#编写可扩展的桌面应用程序的关键概念和实践。
1. 理解可扩展性的概念:可扩展性是桌面应用程序设计中的一个重要概念。
它指的是应用程序的能力,可以轻松地添加新功能或修改现有功能,以适应不断变化的需求。
一个可扩展的应用程序应该具有松耦合的模块和组件,这样可以方便地添加、删除或修改功能,而不会对其他部分造成影响。
2. 使用面向对象的编程方法:C#是一种面向对象的编程语言,因此使用面向对象的编程方法是开发可扩展桌面应用程序的关键。
面向对象的编程充分利用了封装、继承和多态等特性,使代码更可重用、可维护,并且能够以模块化的方式组织应用程序的功能。
3. 使用设计模式:设计模式是可扩展应用程序开发中的重要工具。
它提供了一种经过验证的方法,用于解决常见的软件设计问题。
例如,使用工厂模式可以灵活创建对象,使用单例模式可以确保只有一个实例存在。
了解和使用设计模式可以帮助开发人员更好地组织代码,并更容易地添加新功能。
4. 利用.NET框架:C#是基于.NET框架的一种编程语言。
.NET框架提供了许多用于开发可扩展桌面应用程序的功能和工具。
例如,Windows Presentation Foundation(WPF)是.NET框架中的一种图形界面技术,它使用XAML(可扩展应用程序标记语言)来构建富客户端应用程序。
使用WPF,您可以创建具有丰富用户界面和动画效果的应用程序。
5. 使用插件架构:插件架构是实现可扩展桌面应用程序的一种常见方法。
它允许您将应用程序的功能划分为独立的插件,并在运行时动态加载它们。
这样,您可以根据需要添加或删除插件,而无需修改应用程序的核心代码。
C#提供了强大的反射功能,可以帮助您实现插件机制。
自定义扩展点

自己动手编写Eclipse扩展点分类:Eclipse开发2004-09-15 20:271738人阅读评论(2)收藏举报eclipsedocumentation扩展extensionstringschema扩展(Extension)是Eclipse中一个关键的机制,plug-in利用扩展向Eclipse平台添加新功能。
但是扩展不能随意地创建,必须按照扩展点(extension point)定义的规范进行明确的声明,Eclipse才能认出这些扩展。
我们不仅可以使用Eclipse提供的众多现成的扩展点,而且还可以定义新的扩展点,并在该扩展点上进行扩展。
当然,扩展点的定义比较复杂。
不过Eclipse为用户提供了图形化的编辑界面,我们只要输入一些信息,Eclipse就会自动生成代码,使扩展点的定义变得非常简单。
下面我们就来看看如何在Eclipse中创建一个新的扩展点,并在这个扩展点上进行扩展。
我们需要做以下的工作:1.设计该扩展点2.定义扩展点,即编写扩展点的清单文件3.编写代码来载入该扩展点的扩展我们以创建workList扩展点为例,进行详细介绍。
worklist完成的功能是:创建一个view,在其中以树状显示系统中可用的功能模块,通过双击某个模块节点,执行该扩展定义的方法(method)。
其实相当于一个控制台,通过控制台来运行不同的功能。
由于Eclipse是由一个运行时核心(runtime core)和众多插件组成的,我们也将workList 扩展点定义在一个插件中,有关workList的代码文件也放在这个插件中,这样便于查找和修改,也不影响Eclipse本身的代码。
1. 定义扩展点首先我们要创建一个存放新扩展点信息的插件net.softapp.worklist,这个插件对org.eclipse.ui.views进行扩展,以下是插件的plugin.xml文件在views扩展点的信息:<extensionpoint="org.eclipse.ui.views"><categoryname="WorkListCategory"id="WorkListCategory"/><viewicon="icons/sample.gif"class="net.softapp.internal.worklist.WorkListView"category="WorkListCategory"name="WorkList视图"id="net.softapp.internal.worklist.WorkListView"/></extension>这样就可以通过“window->show view->other”,在弹出的“Show view”对话框中选择“WorkList视图”,打开视图,我们用这个视图显示workList扩展点的所有扩展信息。
实战ExcelAdd-in的三种玩法

实战ExcelAdd-in的三种玩法作者:陈希章发表于 2017年11⽉26⽇前⾔这个系列⽂章应该有⼀阵⼦没有更新了,原因是⼀如既往的多,但是根本所在是我对于某些章节其实还没有完全想好怎么写,尤其是对于Office Add-in这块 —— 到底是要每个都去单独写⼀遍,还是有其他什么好的写法会对读者更有帮助?正如我在分享的⼀些关于写作的个⼈经验那样,我为此颇费了⼀些⼼思琢磨,直到最近才做出了⼀个选择:我将不拘泥于每个应⽤都写⼀次,⽽是尝试总结⼀些共性的操作指南。
本⽂将是⼀个尝试,以我对于Office Add-in开发的了解,Excel所占的⽐重相对较⾼(根据不完全统计,在应⽤商店所有Office Add-in 中,Excel占到40%左右),所以我希望⽤本⽂的Excel Add-in的实际案例,给⼴⼤的Office Add-in开发⼈员直观地了解三种不同的开发技术是如何过渡和共存的,以帮助⼤家做出⾃⼰的选择。
本⽂所提到的三种玩法,是指最早的VBA技术,后来的VSTO技术,以及现在更推荐的Web Add-in的技术。
如果⼤家对于这些基本概念以及Office 365的开发还不太熟悉,欢迎阅读我此前写好的 Office 365开发概述和⽣态环境介绍:,案例介绍我⼀向⿎励在实践中学习。
为了演⽰如何⾃定义开发,并且⽐对不同的技术下⾯实现⽅式的差异,本⽂将以下⾯的⼀个需求作为案例展开。
假设我们需要为Excel增加⼀项功能,⽤户点击⼀个菜单或者按钮后,可以动态⽣成⼀些统计数据,并且根据这些数据⽣成⼀个柱状图。
VBA —— ⼀曲肝肠断,天涯何处觅知⾳VBA 是我们最早的⼀个⽤来扩展Office 应⽤程序的技术,由于其简单易⽤且功能强⼤,在全世界范围内拥有数以亿计的⽤户。
实现上⾯提到的这样的需求,其实是VBA很擅长的,尤其是数据如果本⾝就来⾃于Excel内部的话。
学习VBA的⼀个最好起点就是⽤录制宏。
以本案例⽽⾔,即便你是VBA的新⼿,也可以尝试⼀步⼀步地输⼊数据并且⽣成图表,然后将⽣成的代码稍作整理和修改后,可能就是下⾯这样⼦的。
数字地理信息系统ArcGIS Desktop扩展方式_Add-in编程技术

Add-in 数字签名
安装已签上名的add-in支持多语言显示
自动检测您的桌面应 用程序运行的语言环 境,并选择最佳匹配 的配置文件来显示语 言
Add-in本地化
配置文件命名规则 Config.<language>.xml Config.<language>-<CountryCode>.xml
extensions (new)
Add-in文件结构
Assemblies/JARs XML Metadata Resources
.esriAddIn
AddIn File
(zipped folder)
XML Metadata
XML文件包含了描述add-in的信息
• • • • • • • • • • • • • •
Add-in安装部署
双击安装(EsriRegAddIn.exe) 通过“Customize”添加 通过Add-In Manager 对话框添加删除
Well-Known文件目录:
Vista/7: C:\Users\<username>\Documents\ArcGIS\AddIns\Desktop10.0 XP: C:\Documents and Settings\ <username> \MyDocuments\ ArcGIS\AddIns\ Desktop10.0
Add-in的创建与安装部署
ArcGIS 10 Add-in支持的开发环境
Visual
Studio 2008 + .Net3.5 Visual Studio 2010 + .Net3.5或者.Net4.0 Visual Basic 2008 Express Edition + .Net3.5 Visual C# 2008 Express Edition + .Net3.5 Visual Basic 2010 Express Edition +.Net3.5 或 者.Net4.0 Visual C# 2008 Express Edition +.Net3.5 或者.Net4.0 Eclipse IDE for Java Developers
addwidget用法(一)

addwidget用法(一)Addwidget用法•认识Addwidget•Addwidget的使用场景•Addwidget使用方法认识AddwidgetAddwidget是一种Android系统的桌面小部件,可以在桌面上直接使用,让用户体验更方便。
Addwidget是可扩展的,可以通过添加不同的小部件,快速访问内置应用、第三方应用、设备信息等内容。
Addwidget的使用场景1.添加常用应用的快捷方式:将常用的应用放在桌面上方便快速打开。
2.添加天气、日历、时钟等小部件:让用户可以随时查看相关信息。
3.添加一些自定义的小部件:比如添加一个可以记录日记的小部件等。
Addwidget使用方法1.打开桌面,长按空白位置,弹出“添加桌面”菜单。
2.选择“小部件”,找到想添加的小部件。
3.按住小部件,将其拖拽到桌面上。
4.设置小部件,比如选择显示内容、自定义样式等。
5.完成设置后,返回桌面,即可见到添加的小部件。
Tips: - 不同手机型号对Addwidget的支持程度各不相同,小部件可能会因为系统版本不同而存在差异。
- 一般情况下,小部件所在的应用也需要安装在手机上才能正常使用。
- 定期清除无用的小部件,能有效释放内存空间。
以上就是Addwidget的基本使用方法和一些注意事项。
希望能够帮助各位更好地利用Android系统提供的便利功能,提高使用体验。
Addwidget用法 (续)•Addwidget的常见问题及解决方式Addwidget的常见问题及解决方式1. 添加不成功可能出现的原因:•手机系统不支持此部件;•此部件所在的应用未在手机上安装;•此部件已经存在于桌面上了。
解决方式:•更新手机系统;•安装此部件所在的应用;•检查桌面是否已经添加过此部件。
2. 部件显示不全可能出现的原因:•桌面上的其他元素遮挡了此部件;•该部件并不支持当前手机的分辨率。
解决方式:•尝试调整此部件的位置,使其不被其他元素遮挡;•尝试更换分辨率适配的部件。
关于DLG与DOM套合差检查的Add-in插件式开发

差。 并 最终 输 出精 度 报 告 。 关键词 : DOM ; DL G; 套合差检查 ; 平 面位 置 中误 差 ( 4 ) 鼠标双击事件。 使用 O n D o u b l e C l i c k 方法结束画线 , 并保存线要 1棚谜 数字线划图( D L G) 与正射影像图( D O M) 的套合差检查是指利用已 素。( 5 ) 设定键盘输人 蝴 。使用 O n K e y D o w n 方法判断键盘的输入 , 有的矢量与栅格数据进行叠加 , 分别找到同名点, 并根据坐标计算 中误 若为 E s c 键取? 肖据精度的参考依据。根据以往的检查流程 , 检查人员找 3 . 3计算 中误差
科 技 论 坛
・ l 0 7 ・
关于 DL G与 DOM 套合差检查的 A d d - i n插件式开发
阿依努尔古丽 ・ 阿不都尼亚孜 ( 新疆维吾 尔自治区第一测绘院 , 新疆 昌吉 8 3 1 1 0 0 ) 摘 要: 为保障各 类数据质 量检 查工作的规范性与可靠性 , 促进测绘成 果质 量水平的提 高 , 通过程序 检查数据质量是越 来越重要 的 种技 术手段 本文 简要 介绍 了通过 A d d — i n插件 式开发 实现数 字线 划图与正射影像 图的套 合差检查 , 通过绘制 图 中同名点 , 计算 中误
计报 告 。 4 . 1信息设置。用户需设定 中误差计算公式 、 输出格式 、 图号 、 误差 2技 术 流程 允许值及检查结果输 出路径等基本信息 ,若是后期需要进一步修改或 A d d — i n简介及部署方式" . A d d — i n是 A mG I S 1 0 . 0 更新后 E S R I 主
到同名点后 , 通过 人工统计坐标值并带人公式计算出中误差。 此种检查 根据公式计算中误差,当绘制的位移差线段数量小于 2 0个时, 用 方式存在工作量大 、 作业效率低等缺陷, 耗时较长, 影响项 目周期 。 针对 算术平均值替代中误差 ; 若数量不小于 2 O 个, 按中误差统计。 存在的问题和不足 ,本文提出通过程序实现 DL G与 D O M的套合差检 查, 利用 V i s u a l S t u d i o 2 0 1 0开发环境 , 选用 A r c G I S 1 0 . 1 f o r D e s k t o p 高 精 度 检 测 时 , 中 误 差 计 算 公 式 为 : … 犀 结合 c #语 言进行 A d d — i n插件式 开发 。在 A r c M a p中加载 D L G与 同精度检测时 , 中误差计算公式为: 一1 旨 D O M, 利用特制的画笔工具分别勾绘矢量与影像的同名点 , 用线段标识 其 中, M为成果中误差 , n为绘制的位移差线段数量 , △ 为较差日 o 出两者之间存在的位移差 ,对超过—倍及两倍中误差允许值的位移差 要素用星号进行标记 , 计算 出最大、 最小误差及 中误差 , 并输 出精度统 4 功能 展示
Add-in学习

1.Building custom UI elements using add-ins(source:Developer help)1.1了解XML文件·xml文件根据向导输入内容由系统自动生成,文件名通常为Config.esruaddinx。
·XML文件包括元文件信息(Add-in Meta-data Information)、安装目标、Addin等多项内容。
|-T arget元素:描述插件的运行目标、版本等信息|-AddIn元素:Addin元素内包含了用户的自定义元素:Button、Tool等。
Addin属性描述了编程的环境:Language、library等。
1.2向Button对象类插入ZoomToLayer功能·Button类继承于ESRI.ArcGIS.Desktop.AddIns.Button抽象类;内部包含OnClick、Onupdate 两种重要的方法,并且这两个方法必须被重写(Protected override)。
|-OnClick:在ArcMap中的Click事件触发|-OnUpdate·要完成Zoomtolayer功能,可使用ArcGIS Snippet Finder tool,搜索ZoomToLayer,得Dockablewindowmanager、Document等三个常用的属性需要注意。
1.3 用户自定义Tool实现Adding AddGraphics功能·Tool提供OnMouseDown()和OnMouseUp()事件捕获用户操作,同样需要重写这1.4 combo boxcmbox提供Add() and Remove() 方法添加或删除对象类。
该方法必须被Override。
The ComboBox class provides several event handlers, such as OnSelChange() and OnEditChange(),public Combo1(){//Add two items to the combo box.Point o1 = new Point();o1.PutCoords(0, 0);int c1 = this.Add("Item1", o1);Point o2 = new Point();o2.PutCoords(1, 1);int c2 = this.Add("Item2", o2);//Add the application's caption.ESRI.ArcGIS.Framework.IApplication app = this.Hook as ESRI.ArcGIS.Framework.IApplication;this.Add(app.Caption);//Add one item then removeint c3 = this.Add("Item3");this.Remove(c3);//Select the second item.this.Select(c2);}Protectedoverridevoid OnSelChange(int cookie){//选项发生改变时触发事件if (cookie == -1)return;//Get the associated object.Point tag = this.GetItem(cookie).Tag as Point;if (tag != null){System.Windows.Forms.MessageBox.Show(tag.X + ", " + tag.Y);}}Protectedoverridevoid OnEnter(){//Loop through the item collection.foreach(boBox.Item item inthis.items){if (this.Value == item.Caption)return;}this.Add(this.Value);}Protectedoverridevoid OnEditChange(string editString){if (pare(editString, "ABC", true) == 0){System.Windows.Forms.MessageBox.Show("editString is " + this.Value); }}Protectedoverridevoid OnFocus(bool set){if (set)System.Diagnostics.Debug.WriteLine("Get focus.");if (!set)System.Diagnostics.Debug.WriteLine("Lose focus.");}Protectedoverridevoid OnUpdate(){this.Enabled = ArcMap.Application != null;}}1.5 Tool BarToolbar相当于一个容器,任何Button、Command都可以转入。
2. MicroStation_Addins

12 |
© 2009 Bentley Systems, Incorporated
高级主题
1、捕获COM事件:
(1). 声明一个类来实现接口 internal sealed class MyAddin : Bentley.MicroStation.AddIn, BCOM.IModelChangeEvents (2). 调用添加事件捕获的方法 protected override int Run (System.String[] commandLine) { s_comApp.AddModelChangeEventsHandler (this); …… }
© 2009 Bentley Systems, Incorporated
• 高级主题
• 问题与解答
2 |
Addins简介
Addins是一种全新的开发MicroStation应用程序的方法,从V8XM开始支持 V8XM
V8i
V8i SS1~3
Addins完全基亍.NET平台,可用C#、和C++.NET等语言编程 C# C++/CLI
实现MyAddins open命令——KeyinCommands.cs
实现MyAddins place命令——MyAddinsPlacementCmd.cs
BCOM.Point3d basePt; int m_nPoints = 0; public void DataPoint (ref BCOM.Point3d Point, BCOM.View View) { if (0 == m_nPoints) { m_mandState.StartDynamics(); basePt = Point; m_nPoints = 1; m_App.ShowPrompt(“Enter End Point"); }else{ Dynamics(ref Point, View, BCOM.MsdDrawingMode.Normal); basePt = Point; } }
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
arcpy.ga
arcpy.time
游标
插入线
更新
读取Geometry
不同的对象
Point PointGeray of Point
Point 不是Geometry 而是 用来构造Geometry的。
Polygon
读取点
读取面
Geometry之间的空间拓扑运算
更加安全
更易安装管理
Add-in支持的类型
按钮和工具 组合框
.NET/JAVA和Python 有所不同
菜单和右键菜单
Tool palettes 可停靠窗体 Application extensions Editor extensions Editor Construction Tools
Add-In安装部署
ArcGIS在线帮助:/en/help/
广而告之
小结
一起说说吧?
ACME.esriAddIn
XML 配置文件
Add-in 与本地化
Python Add-in
Python Add-in
No dll’s! No compiling! No ArcObjects! Less code!
Python Add-in 环境
DEMO Eclipse+Python+Pydev+Wxpython
操作.mxd和.lyr
表、要素类与 Numpy格式互 转
版本、属性域和 子类工作流
扩展了数据驱动 页面功能,自动 导出、打印地图
可发布为服务在 Web端使用
执行空间分析、 空间运算
可访问Network Analyst Toolbox的所有 工具(增删图层、 获取属性) 结合 Arcpy.Describe 使用
NumPy-Python中的科学计算包
创建一个表
两个轻量级的对象
FeatureSet RecordSet 和ArcGIS Server 通讯的 对象
pythonaddins
– OpenDialog() – SaveDialog() 不能脱离 ArcGIS 环境 – GPToolDialog() – MessageBox() – GetSelectedTOCLayerOrDataFrame()
Python Add-in 开发
这个要知道
每一种类型的Add-in都是一个类
不要忘记我
属性+方法(事件)
都有Enable属性 我们要做的就是实现这些方法
一个完整的流程
DEMO
Tool
Extention
DEMO
Python Add-in 揭秘
arcpy
arcpy
数据的编辑会话
条件:两个Geometry 拓扑运算:相交,包含,剪切…… 示硬这 。背些 ,关 学系 会很 利多 用, 帮但 助是 和不 智要 能死 提记
各种List
不可小觑的两个参数
arcpy.ListFeatureClasses("G*", "polygon")
一个不得不提的命令-arcpy.da.walk
学习资源
“ArcGIS _本地开发”官方微博:/arcgisdesktop
“ArcGIS_Desktop”官方微博:/arcgisengine
“Esri中国”技术博客:/arcgis_all ArcGIS资源中心:/en/home/
双击 自定义 - Add From File Copy
- 安装
Add-in Manager
查看所有Add-Ins的详细信息 删除 Add-Ins 自己的 vs. 共享的
文件结构
Assemblies/JARs/Scripts
XML Metadata Resources
Add-In 文件
(zipped 文件)
ArcGIS桌面定制-灵巧的Python Add-in
Esri中国信息技术有限公司 刘宇
大纲
Add-in介绍 Python Add-in 开发环境搭建 Python Add-in 开发 Python Add-in 揭秘
小结
Add-in介绍
Add-in 介绍
更加容易创建 更加容易共享