需求:由於初次使用ArcGIS編輯器不習慣、數據量大造成經常程序未響應、計算機斷電等因素,造成編輯的數據沒有保存,影響了生產效率,本人根據草色靜然的博文,總結了自動保存編輯的實現方法。
分析:自動保存,用到的肯定是計時器,一般都是用微軟件的Timer控件,它的Elapsed 事件指達到間隔時發生(由Interval屬性指定),所以基本步驟是:
(1)聲明變量;
(2)寫Elapsed事件,並在事件中寫自動保存的功能;
(3)在OnClick調用Elapsed事件,觸發Timer。
要自動保存編輯內容,得獲取編輯器,知道當前工作空間然后調用StopEditing和StartEditing方法。這些具體的類和方法的使用,得查看ESRI幫助文檔了。
這里需要注意的是Editor的獲取,獲取方法可參考:http://www.cnblogs.com/liweis/p/4582176.html ,但我現在想描述的問題是,獲取的代碼寫在哪里的問題。默認情況下,新建AddIn程序,它會在Config.Designer新建一個ArcMap靜態類,類里通過GetHook方法獲取了Application、Document、ThisApplication、DockableWindowManager、Events五個對象,那當然根據需要,我們可以向其中添加Editor對象。但是如果我再在程序中添加Addin組件時,它會重寫這個類到默認狀態,以前自定義的就沒有了。原因:凡是修改了Config.esriaddinx,Config.Designer.cs的內容都會恢復到默認,而且引用ArcGIS Desktop Add-In的復制本地屬性會變成F,所以,建議,將這些自定義的內容不要放在Config.Designer.cs中。
接下來,我想把這個按鈕功能放在工具條上,調出工具條即可。網上沒有搜索到這樣的例子,自己摸索一下,終於實現 了:其實也很簡單,在現有基礎上添加新建項,選擇 Add-in Command Container,在彈出的向導中選擇工具條,設置工具條名稱(C aption),添加條目,選擇已寫好的Button即可。
我們來看一下它 標簽代碼,非常清楚明白。