C# 如何从工具窗口访问当前代码编辑器?

C# 如何从工具窗口访问当前代码编辑器?,c#,visual-studio-2015,visual-studio-extensions,C#,Visual Studio 2015,Visual Studio Extensions,我目前正在尝试使用“Visual Studio 2015”为此创建扩展。 我想创建一个函数,当单击ToolWindow的按钮时,插入适合当前代码编辑器光标部分的源代码。 SDK模板中有一个ToolWindow示例。 但是,它是在ToolWindow中完成的,没有编写访问代码编辑器的方法。 如何从ToolWindow获取/设置当前代码编辑器源代码?正如Sergey所建议的,我们可以使用该属性 但不知何故,我未能以这种方式获得VS2015的选择:DTE.ActiveDocument.Selectio

我目前正在尝试使用“Visual Studio 2015”为此创建扩展。 我想创建一个函数,当单击ToolWindow的按钮时,插入适合当前代码编辑器光标部分的源代码。 SDK模板中有一个ToolWindow示例。 但是,它是在ToolWindow中完成的,没有编写访问代码编辑器的方法。
如何从ToolWindow获取/设置当前代码编辑器源代码?

正如Sergey所建议的,我们可以使用该属性

但不知何故,我未能以这种方式获得VS2015的选择:
DTE.ActiveDocument.Selection

对我来说,在VS2015中,我创建了一个新的
自定义工具窗口
项,在工具窗口中添加了一个简单的
文本框
控件,然后双击默认的
单击我
按钮导航到
按钮单击
工具窗口1control.xaml.cs
文件中的
方法,然后我添加如下代码从文本框中获取文本并将其插入编辑器:

        [SuppressMessage("Microsoft.Globalization", "CA1300:SpecifyMessageBoxOptions", Justification = "Sample code")]
        [SuppressMessage("StyleCop.CSharp.NamingRules", "SA1300:ElementMustBeginWithUpperCaseLetter", Justification = "Default event handler naming pattern")]
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            string text = textBox.Text;
            DTE dte = Package.GetGlobalService(typeof(DTE)) as DTE;
            (dte.ActiveDocument.Selection as EnvDTE.TextSelection).Text = text;
        }
所以对我来说,我实际上使用下面的代码来插入文本:

        DTE dte = Package.GetGlobalService(typeof(DTE)) as DTE;
        (dte.ActiveDocument.Selection as EnvDTE.TextSelection).Text = "Add your text here."; 
此外:

要使用上述代码,您需要在
toolswindow1control.xaml.cs
文件中添加定义:

        using Microsoft.VisualStudio.Shell;
        using EnvDTE;
希望对您有所帮助:)

请参见