- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试操纵 Visual Studio 文本编辑器滚动条值。问题是我只有 dte.ActiveDocument,不可能从那里完成。
当 VS 启动并且我捕获 dte.Events.CommandEvents 时,我的扩展只加载一次。在某些时候,我想更改 ActiveDocument 的滚动条值。为此,我需要 IWpfTextView 或 ITextView。您知道如何获取该对象的实例吗?
internal class MyExtension
{
private CommandEvents commandEvents;
private DTE dte;
public MyExtension(DTE dte)
{
this.dte = dte;
commandEvents = dte.Events.CommandEvents;
commandEvents.BeforeExecute += commandEvents_BeforeExecute;
}
void commandEvents_BeforeExecute(string Guid, int ID, object CustomIn, object CustomOut, ref bool CancelDefault)
{
var doc = dte.ActiveDocument
// CHANGE SCROLLBAR VALUES HERE
}
}
最佳答案
我找到了一种方法来做到这一点。在扩展的主类中,我得到了 SVsTextManager
public sealed class MyExtensionPackage : Package
{
protected override void Initialize()
{
DTE dte = (DTE)base.GetService(typeof(DTE));
var txtMgr = (IVsTextManager)base.GetService(typeof(SVsTextManager));
plugin = new MyExtension(dte, txtMgr);
base.Initialize();
}
}
internal class MyExtension
{
private CommandEvents commandEvents;
private DTE dte;
private IVsTextManager txtMngr;
public MyExtension(DTE dte, IVsTextManager txtMngr)
{
this.txtMngr = txtMngr;
this.dte = dte;
commandEvents = dte.Events.CommandEvents;
commandEvents.BeforeExecute += commandEvents_BeforeExecute;
}
void commandEvents_BeforeExecute(string Guid, int ID, object CustomIn, object CustomOut, ref bool CancelDefault)
{
var doc = dte.ActiveDocument
IVsTextView textViewCurrent;
txtMngr.GetActiveView(1, null, out textViewCurrent);
int a, b, c, verticalScrollPosition;
var scrollInfo = textViewCurrent.GetScrollInfo(1, out a, out b, out c, out verticalScrollPosition);
textViewCurrent.SetScrollPosition(1, verticalScrollPosition);
}
}
关于c# - 如何获得 EnvDte.ActiveDocument 的 IWpfTextView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20101167/
如何在 Microsoft Word 中获取 ActiveDocument 的 Windows 句柄? 我希望将句柄值保存到一个变量中。 最佳答案 您可以使用 FindWindow 函数获取当前事件的
我在 Word VSTO 加载项项目中有一行代码,它曾经可以工作但突然不再工作了: Microsoft.Office.Interop.Word.Document doc = Globals.ThisA
我在我的 64 位 Vista 机器上为 Photoshop CS5.1 写了一个相当大的脚本。现在,当我在我的新 64 位 Windows 7 机器上运行完全相同的脚本时,Adobe ExtendS
我正在编写 Visual Studio 2008 扩展。我想在每次 DTE.ActiveDocument 更改时收到通知,因此我可以在自定义面板中更新某些内容,该面板执行与解决方案资源管理器类似的功能
我还看过其他几篇 StackOverflow 帖子,例如这篇: How to Use/Enable (RegExp object) Regular Expression using VBA (MACR
我正在尝试访问脚本中当前打开的文档,但它未定义。但我已经在 Photoshop 中打开了文档。我应该以某种方式初始化它吗?这是我的代码 function ProcessDocumentWithoutX
我正在尝试操纵 Visual Studio 文本编辑器滚动条值。问题是我只有 dte.ActiveDocument,不可能从那里完成。 当 VS 启动并且我捕获 dte.Events.CommandE
我正在尝试计算 Word 文档中图片形状的左侧位置,以便我可以使图像在页面上居中。为此,我需要知道左边距值以及左右边距之间可用页面的宽度。 我的问题是,当我的宏运行时,出现错误,因为 ActiveDo
我正在创建一个 VSTO Office 2007 加载项。 我需要启用或找到一个解决方案,可以使用 byte[] 而不是硬盘驱动器保存到 Web 服务。 所以,我通过访问一个网站并单击一个 URL 打
我正在使用 MEF 开发 Visual Studio 2013 扩展,同时尝试读取 Active Document 内容类型和代码。目前,它仅在编辑器中打开文档/项目项时读取。一旦打开它们,每当我们在
我在另一个线程中使用了 Jtchase08 提供的代码的修改版本,当我将对象库更改为相关的 Microsoft Word 版本时,它在 Excel 2010 和 2016 中工作正常,但是试图使同样的
我是一名优秀的程序员,十分优秀!