向ArcGIS的ToolBarControl中添加任意的windows組建的方法[轉]

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   io   strong   for   

向ArcGIS的ToolBarControl中添加任意的windows組建的方法[轉]

Link:http://www.cnblogs.com/mymhj/archive/2012/10/12/2721036.html

概要:在使用ArcEngine開發中,給ToolbarControl添加按鈕形式的命令項相信大家都很熟悉了,因為網上的例子很多。但這種使用click調用功能的方式只能滿足大部分使用者在體驗方面的需求,除此之外使用者很可能要求你在工具條中增加類似文字框,單選框、選擇面板,combobox等windows控制項,今天有個同事問我這個問題就在這裡做一個執行個體。供大家參考。

具體實現:

? 1 知識整備

?(1 )其實要實現這個效果很簡單,只要大家瞭解Arcgis中的IToolControl介面的使用方法,就不難實現。

?? IToolControl 這個介面有只有簡單的三個方法:

??

hwnd:是個唯讀屬性,用於給調用者返回控制項控制代碼。

OnDrop:是一個方法,用於調用者驗證當前控制項是否可拖動。

OnFocus:是一個方法,用於調用通知當前項,你已經聚焦。

(2)除了瞭解IToolCotrol介面之外,大家還必須具備知道如何建立Arcgis 命令外掛程式的知識,以及如何調用外掛程式的方法。

??

2 實現

?? 以一個簡單Combobox為例:

??? public sealed class Command1 : BaseCommand, IToolControl
??? {
?

??????? private int _handle = 0;
??????? private ICompletionNotify _CompNotify;
??????? private System.Windows.Forms.ComboBox comboBox = new System.Windows.Forms.ComboBox();
??????? private IHookHelper m_hookHelper = null;
??????? public Command1()
??????? {
??????????? this._handle = comboBox.Handle.ToInt32();
??????????? comboBox.Items.Add("大家好才是真的好1");
??????????? comboBox.Items.Add("大家好才是真的好1");
??????????? comboBox.Items.Add("大家好才是真的好1");
??????? }

??????? #region Overriden Class Methods

??????? /// <summary>
??????? /// Occurs when this command is created
??????? /// </summary>
??????? /// <param name="hook">Instance of the application</param>
??????? public override void OnCreate(object hook)
??????? {
??????????? if (hook == null)
??????????????? return;

??????????? try
??????????? {
??????????????? m_hookHelper = new HookHelperClass();
??????????????? m_hookHelper.Hook = hook;
??????????????? if (m_hookHelper.ActiveView == null)
??????????????????? m_hookHelper = null;
??????????? }
??????????? catch
??????????? {
??????????????? m_hookHelper = null;
??????????? }

??????????? if (m_hookHelper == null)
??????????????? base.m_enabled = false;
??????????? else
??????????????? base.m_enabled = true;

??????????? // TODO:? Add other initialization code
??????? }

??????? /// <summary>
??????? /// Occurs when this command is clicked
??????? /// </summary>
??????? public override void OnClick()
??????? {
??????????? // TODO: Add Command1.OnClick implementation
??????? }

??????? #endregion

??????? #region IToolControl 成員

??????? public bool OnDrop(esriCmdBarType barType)
??????? {
??????????? if (barType == esriCmdBarType.esriCmdBarTypeToolbar)
??????????? {
??????????????? return true;
??????????? }
??????????? else return false;
??????? }

??????? public void OnFocus(ICompletionNotify complete)
??????? {
??????????? _CompNotify = complete;
??????? }

??????? public int hWnd
??????? {
??????????? get
??????????? {
??????????????? return _handle;
??????????? }
??????? }

??????? #endregion
??? }

3 實現效果

?

照著這個執行個體可以添加,其它的windows控制項

??

4?執行個體代碼

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.