Visual Studio 2008可擴充性開發(四):添加新的命令

來源:互聯網
上載者:User

前言

在之前的兩篇隨筆中,我介紹了Add-In的運行機制,這樣對Add-In的事件、生命週期 、與VS如何互動可以有個基本的瞭解了。現在是時候看看如何在VS中完成一些操作,這才 是Add-In開發的目的所在。

一般的,Add-In應當提供一些介面元素,這樣使用者可以進行某些操作,比如在主菜單 內添加一個功能表項目,或者在編輯器的操作功能表內添加一個功能表項目,在本文中就來看看如 何實現這些。

關於命令(Command)

考慮一個極為常見的情境:在編寫代碼的過程中,選中一段文本,點擊Edit->Copy (或工具列按鈕)或者按下Ctrl+C,我們可以把選中文本拷貝到剪貼簿,這個過程的背後 發生了什嗎?

是什麼完成的拷貝操作呢?答案是命令。可以認為命令就是某個特定的功能,如Copy 、Paste、Cut等等。VS本身就內建大量的命令(有數千個之多),而上面說到的功能表項目、 工具列或快速鍵則執行了這些命令。通過Tools->Options菜單可以查看命令列表:

圖1:VS的命令列表

值得注意的是,執行命令並非必須通過介面元素,比如在命令視窗中:

圖2:在命令視窗執行命令

這樣也可以執行同樣的命令。現在我們知道存在多種方式來執行命令,即菜單、工具 欄、快速鍵或命令視窗,這裡統稱為觸發者。在VS中,觸發者與命令是分離開來的:使用者 通過觸發者來執行命令,而命令負責檢查自身的狀態(名稱、是否可見、是否可用等等) 並執行。這意味著,命令可以對應一個或多個功能表項目,也可以不對應任何功能表項目。

另一方面,對於同一個命令,比如Edit.Copy,仍然可能有不同的情況。在文字編輯器 內和在解決方案管理器內的Edit.Copy命令執行內容並不相同。這裡有一個命令目標 (Command Target)的概念,VS將命令轉向給了命令目標,而命令目標按自己的實現來執 行該命令。總結下來就是:

對象 職責
觸發者 提供一種方式供使用者使用
命令 一個邏輯實體,檢查自身的狀態,可以執行命令,也可以轉向一個 命令目標
命令目標 根據傳遞過來的命令,按自己的實現來執行它

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.