【问题标题】:Subscribe to events of an existing RichTextContentControl订阅现有 RichTextContentControl 的事件
【发布时间】:2015-08-03 14:36:21
【问题描述】:

我正在尝试访问现有 .docx 文档 (Office Open XML) 的所有富文本内容控件。

我找到了一种通过循环指定范围来获取文档的所有内容控件的方法:

var contentControls = new List<ContentControl>();
Range rangeStory;
foreach (Range range in wordDocument.StoryRanges)
{
    rangeStory = range;
    do
    {
        try
        {
            contentControls.AddRange(rangeStory.ContentControls.Cast<ContentControl>());
        }
        catch (COMException) { }
        rangeStory = rangeStory.NextStoryRange;
    }
    while (rangeStory != null);
}

但我找不到将这些 ContentControl(程序集:Microsoft.Office.Interop.Word)转换为 RichTextContentControl(程序集:Microsoft.Office.Tools.Word)的方法。 p>

RichTextContentControl richTextContentControl = contentControl as RichTextContentControl;
throws Exception

我想做这个转换,因为我需要订阅 RichTextContentControl 的 enteringexiting 事件。

richTextContentControl.Entering += (sender, args) => {/*..*/ };
richTextContentControl.Exiting += (sender, args) => {/*..*/ }; 

【问题讨论】:

    标签: c# ms-word vsto openxml openoffice-writer


    【解决方案1】:

    找到了!有一种非常简单的方法可以通过 Vsto 访问任何类型的内容控件:

    foreach (var result in thisDocument.Controls.OfType<RichTextContentControl>())
    {
        result.Entering += (sender, args) =>
        {
            MediatorContext.Current.Send(new CurrentKomponenteChangedRequest(result.ID, State.Entering));
        };
    
        result.Exiting += (sender, args) =>
        {
            MediatorContext.Current.Send(new CurrentKomponenteChangedRequest(result.ID, State.Exiting));
        };
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 2015-11-06
      • 2010-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多