我对Visual Studio Extensions不熟悉。有没有办法从Visual Studio 2010工具窗口与代码窗口进行交互。 我在VisualStudio工具窗口上托管了一个Datagrid。 DataGrid包含ClassName,MethodName e.tc.点击className / MethodName需要实现以下
我知道这可以使用“IWpfTextView”类,但不知道如何。做了很多谷歌搜索,但徒劳无功。即使下面的链接仍未得到解答link。
非常感谢上述任何帮助。
答案 0 :(得分:2)
我实际上做了几乎相同的事情。您可以在Visual Localizer上看到完整的源代码。
基本上你需要做两件事:
获取IVsTextView也很容易。在我的项目(Visual Localizer)中有一个名为DocumentViewsManager的类,它位于VLlib / components中,它有一个相当简单的方法叫做GetTextViewForFile(),它只接受文件路径作为参数。它执行以下操作:
希望它有所帮助。
答案 1 :(得分:0)
谢谢你。 我找到了另一种方法。
您需要使用“TextSelection”类来突出显示上面的代码行。
foreach (CodeElement codeElement in projectItem.FileCodeModel.CodeElements)// search for the function to be opened
{
// get the namespace elements
if (codeElement.Kind == vsCMElement.vsCMElementNamespace)
{
foreach (CodeElement namespaceElement in codeElement.Children)
{
// get the class elements
if (namespaceElement.Kind == vsCMElement.vsCMElementClass || namespaceElement.Kind == vsCMElement.vsCMElementInterface)
{
foreach (CodeElement classElement in namespaceElement.Children)
{
try
{
// get the function elements to highlight methods in code window
if (classElement.Kind == vsCMElement.vsCMElementFunction)
{
if (!string.IsNullOrEmpty(highlightString))
{
if (classElement.Name.Equals(highlightString, StringComparison.Ordinal))
{
classElement.StartPoint.TryToShow(vsPaneShowHow.vsPaneShowTop, null);
classElement.StartPoint.TryToShow(vsPaneShowHow.vsPaneShowTop, null);
// get the text of the document
EnvDTE.TextSelection textSelection = window.Document.Selection as EnvDTE.TextSelection;
// now set the cursor to the beginning of the function
textSelection.MoveToPoint(classElement.StartPoint);
textSelection.SelectLine();
}
}
}
}
catch
{
}
}
}
}
}
}