怎么做我检测到的文本和光标的位置变化一词的使用应用程序级

StackOverflow https://stackoverflow.com/questions/55735

  •  09-06-2019
  •  | 
  •  

我想写一个词addin,做了一些计算和更新一些ui每当用户类型的东西或移动的当前插入点。看MSDN docs,我没有看到任何明显的方式,如一个TextTyped事件上的文件或应用程序的对象。

任何人都不会知道如果这是可能的,而没有投票的文档?

有帮助吗?

解决方案

正如你可能已经发现, 字有事件, 但他们真粗行动,像一文件开放或一个换到另一个文件。我猜MS这样做有意阻止一个蹩脚的宏从放慢的打字。

总之,没有好的方法做你想要什么。 一个字MVP确认,在这个线程。

其他提示

实际上有一种方法可以运行一些代码时,一词已被类型,可以使用智能标记,并替代的识别方法,这种方法将被称为只要一个字是类型,这意味着每当用户输入的一些文本和打的空间,标签,或输入的钥匙。

一个问题,但是,如果你改变该文本的使用"的范围。文本",它将检测到它作为一个词的变化和调功能,所以它可能会导致无限的循环。

这是一段代码我用来实现这一点:

public class AutoBrandSmartTag : SmartTag
{
    Microsoft.Office.Interop.Word.Document cDoc;

    Microsoft.Office.Tools.Word.Action act = new Microsoft.Office.Tools.Word.Action("Test Action");

    public AutoBrandSmartTag(AutoBrandEngine.AutoBrandEngine _engine, Microsoft.Office.Interop.Word.Document _doc)
        : base("AutoBrandTool.com/SmartTag#AutoBrandSmartTag", "AutoBrand SmartTag")
    {
        this.cDoc = _doc;

        this.Actions = new Microsoft.Office.Tools.Word.Action[] { act };
    }

    protected override void Recognize(string text, Microsoft.Office.Interop.SmartTag.ISmartTagRecognizerSite site, 
        Microsoft.Office.Interop.SmartTag.ISmartTagTokenList tokenList)
    {
        if (tokenList.Count < 1)
            return;

        int start = 0;
        int length = 0;
        int index = tokenList.Count > 1 ? tokenList.Count - 1 : 1;

        ISmartTagToken token = tokenList.get_Item(index);

        start = token.Start;
        length = token.Length;
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top