1

在问我的问题之前,我想简要描述一下我的问题的背景:我正在 C# 上开发 ms word COM 插件,我需要处理用户的文本选择。现在我能够捕捉到选择事件 - 它看起来像

Microsoft.Interop.Word._Application app;
app = (Word._Application )Application; // Application object comes on addin's connection
app.Application.WindowSelectionChange+= 
            new Word.ApplicationEvents4_WindowSelectionChangeEventHandler(selChange);

///
void selChange(Word.Selection selection){

   MessageBox.Show(selection.Text); // this is my problem, Text property is not available

}

// 属性 Text 不存在,但文档告诉它存在。我怀疑这个属性不适用于 ms word 2007 - 在文档中只提到了 2003,2010 版本。但我怎么能做类似的事情selection.getSelectedText()?我试着玩selection.Rows, selection.Rows[0], selection.Words,selection.Words[0]- 没有成功。

4

1 回答 1

2

根据文档,该Selection.Text属性也应可用于 Word 2007。我为您的案例做了一个小样本实现来测试它,至少在 Word 2010 和 2013 上我不能让它失败:

var wordApplication = new Application() { Visible = true };
wordApplication.Documents.Add();
wordApplication.WindowSelectionChange += delegate(Selection mySelection) { Console.WriteLine(mySelection.Text); };

所以,我建议你检查你是否包含了正确的命名空间,并且Selection你正在使用的接口实际上是来自Microsoft.Office.Interop.Word命名空间的接口。

于 2013-02-26T22:47:46.323 回答