UserControl不包含针对应用程序的定义

时间:2018-10-17 08:24:16

标签: c# ms-word vsto word-addins

单击按钮,我试图在活动的Word文档中执行搜索操作。 而且在我的代码中出现错误是

该按钮位于自定义任务窗格上

  

错误CS1061'UserControl1'不包含'Application'的定义,并且找不到可访问的扩展方法'Application'接受类型为'UserControl1'的第一个参数(您是否缺少using指令或程序集引用?) WordAddIn1 c:\ users \ veroot \ source \ repos \ WordAddIn1 \ WordAddIn1 \ UserControl1.cs 29有效

代码是

private void button1_Click(object sender, EventArgs e)
    {
        object findText = textBox1.Text;
        object missing = System.Type.Missing;

        Word.Document document = this.Application.ActiveDocument;
        Word.Range rng = document.Range(0, Type.Missing);


        rng.Find.Highlight = 0;
        rng.Find.Forward = true;
        do
        {
            if (rng.HighlightColorIndex == WdColorIndex.wdYellow)
            {

                rng.HighlightColorIndex = WdColorIndex.wdRed;
                rng.Font.ColorIndex = WdColorIndex.wdBlue;
            }
            int intPosition = rng.End;
            rng.Start = intPosition;
        } while (rng.Find.Execute("", missing, missing, missing, missing, missing, true,
            missing, missing, missing, missing, missing, missing, missing, missing));
    }

1 个答案:

答案 0 :(得分:0)

在VSTO解决方案中,只能使用关键字this来引用ThisAddin类中的宿主Office应用程序。在所有其他类(包括用于UserControl的类)中,this将引用该类(UserControl),并且与宿主Office应用程序没有任何关系或连接。因此,对于问题中显示的代码,this引用UserControl类。

为了引用运行VSTO加载项的Office应用程序,最好使用Globals关键字。例如

 Word.Document doc = Globals.ThisAddIn.Application.ActiveDocument;

 Word.Document doc = Globals.ThisAddIn.app.ActiveDocument;

其中appThisAddin类中的类级字段-示例声明:

    public partial class ThisAddIn
    {
        public Word.Application app;
ThisAddin_Startup中分配的

-例如:

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        app = this.Application;