2010-07-02 43 views
3

我在寫我自己的擴展。我創建了一個工具欄按鈕。我使用的模板是「Visual Studio Package」,並且在嚮導中有一個選項來創建一個命令按鈕(或類似的東西)Visual Studio 2010的擴展得到選定的文本

所以按鈕顯示出來,但我無法弄清楚如何獲取當前文檔或文檔中的選定文本。

任何幫助,將不勝感激。

回答

7

有兩種方法來解決:

  1. 全球手柄的按鈕,並使用DTE來獲取當前文件(DTE.ActiveDocument)和選定的文本(((TextDocument)activeDoc).Selection.Text)。 DTE dte = GetService(typeof(SDTE)) as DTE;注意,活動文檔可能null:您可以通過編寫得到你的包頂級DTE對象。
  2. 在編輯器級別創建命令處理程序來處理給定的命令。我寫的對齊作業擴展(source)就是一個例子。這是command filter的樣子。
+0

謝謝,所述DTE DTE = GetService的(typeof運算(SDTE))作爲DTE;正是我所追求的,我正在玩GetService。是否有任何資源列出您可以傳入的所有內容?他們都做了什麼? – 2010-07-02 06:18:49

+1

一個竅門是尋找像SDTE這樣的接口; 「S」表示「服務」,並且被用作卡在服務提供商中的對象的密鑰。看看[這個命名空間的MSDN(http://msdn.microsoft.com/en-us/library/bb164288.aspx)(滾動頁面,直到找到與'SVs'啓動界面)。 – 2010-07-02 07:09:17

+0

......我還應該提到:這些地圖中的每一個至少*一個界面,儘管有些可以映射到很多。例如,'SVsUIShell'映射到'IVsUIShell','IVsUIShell2' ......經過4 – 2010-07-02 07:11:10

相關問題