2010-02-06 39 views
10

我想爲Visual Studio 2010編寫一個插件,但實際上我遇到了一些問題。我想這樣做似乎很容易,我想,一個小工具箱將出現選擇在Re​​Sharper的喜歡在代碼編輯器中的文本(與菜單,有助於重構小筆)時,或喜歡這裏:編寫Visual Studio 2010插件,想在代碼編輯器中顯示一個像Resharper的工具箱

http://www.axtools.com/products-vs2010-extensions.php?tab=selection-popup

我想知道:

  1. 有幫助啓動的anu Visual Studio模板嗎?我嘗試使用「編輯器視口裝飾」,但我不確定這一點。

  2. 我應該從啓動工具箱還是從系統工具箱中顯示一些按鈕?在鏈接中的axtools插件是一個定製的工具箱或系統?

  3. 如何檢測文本是否被選中?

我現在沒有更多的問題。我寧願web開發人員,所以編寫一個visual studio插件對我來說是一件新事物。

在此先感謝。

回答

4

我可以回答這個問題的兩個部分:

  1. 「編輯文本裝飾品」模板附帶的SDK是一個良好的開端。一旦你有了這個,看看我寫的一個虛擬多用戶輸入演示的視覺管理器:AgentBadgeVisualManager.cs。這會告訴你如何在某些文字附近放置某種類型的裝飾物(儘管不是正下方)。您還需要查看ViewCreationListener.cs文件,其中有AdornmentLayerDefinition用於可視化管理器(最重要的是要更改,從您使用項目模板獲得的默認值是Order屬性,以確保您的裝飾品在之上顯示任何文字)。
  2. 我不知道這一個,抱歉:(你會想這是某種WPF UIElement,但過去它是真的取決於你。
  3. ITextView,你將有如作爲樣本(它被傳遞給AgentBadgeVisualManager)的一部分實現的IWpfTextViewCreationListener的一部分,你可以訂閱SelectionChanged事件是這樣的:

    view.Selection.SelectionChanged += (sender, args) => /* call methods to update your adornment here */;

    注意該事件不會被解僱時選擇是空的,並且跟隨在附近的插入點,所以如果你想跟蹤它,你也需要d收聽caret改變的事件。但是,如果您只關心a)選擇非空時,或b)當選擇在空和非空之間變化時,該事件就足夠了。

有關擴展更廣泛的信息,你可以檢查出我已經寫在我的github page其他分機,瞭解我是如何寫他們on my blog,檢查出VSX samples page,或editor samples page on codeplex

相關問題