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

标签 c# visual-studio-2015 visual-studio-extensions

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

最佳答案

正如 Sergey 所建议的,我们可以使用 TextSelection.Text属性(property)。

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

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

        [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."; 

此外:

要使用上面的代码,需要在ToolWindow1Control.xaml.cs文件中添加定义:

        using Microsoft.VisualStudio.Shell;
        using EnvDTE;

希望对您有所帮助:)

关于c# - 如何从工具窗口访问当前代码编辑器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57783838/

相关文章:

windows-installer - log4net 日志文件在应用程序安装子文件夹中的 Windows 资源管理器中不可见

c# - 如何配置连接字符串到 RDS 实例 (MSSQLServer Express)

c++ - 将 LAPACK 安装到 Visual Studio 2015

c# - DotNetOpenAuth:网络表单,入门

.net - VS2015 NuGet 包管理器未加载任何在线包

c++ - 为什么在 Visual Studio 中使用 LLVM+Clang 时未定义 __clang__?

visual-studio-2012 - 在同一项目中部署MEF组件和VS包

css - 使用 Web 编译器(Visual Studio 扩展)禁用所有 css 缩小

c# - "Activity Pointer"CRM 2011 中不允许创建/更新方法

c# - 无法发现 NUnit 测试用例