为什么我的查找和选择代码选择Word中的所有文本?

时间:2015-09-24 10:02:51

标签: c# select ms-word find wildcard

我想在C文档中找到并选择Word文档中的所有文本,即括号之间。但它会选择所有文本。

以下是此部分的完整代码:

private void StartAll_Click(object sender, EventArgs e)
{
    foreach (var item in fileLIST.Items)
    {

        // Open + activate Word
        Word._Application word_app = new Word.Application();

        //visible or not
        word_app.Visible = true;

        word_app.Documents.Open(item.ToString());



        Word.Range range = word_app.ActiveDocument.Content;
        Word.Find find = range.Find;

        find.MatchWildcards = true;
        find.Text = "\[*\]";
        find.Forward = true;
        find.Wrap = Word.WdFindWrap.wdFindContinue;
        find.ClearFormatting();


        find.Execute();


        // unhide hide all
        range.Font.Hidden = 1;  // 1 = False


        // Save and close
        word_app.ActiveDocument.Save();


        object SaveChanges = Word.WdSaveOptions.wdSaveChanges;
        word_app.Quit();
    }

2 个答案:

答案 0 :(得分:1)

要在简单括号中查找文本,必须转义括号字符;而不是选择执行查找所需的范围。 ; - ):

word_app.Documents.Open(item.ToString());

Word.Range range = word_app.ActiveDocument.Content;
Word.Find find = range.Find;

find.MatchWildcards = true;
find.Text = @"\[*\]";
find.ClearFormatting();
find.Execute();
while (find.Found)
{
    // unhide hide all
    range.Font.Hidden = 1; // 1 = F
    find.Execute();
}

答案 1 :(得分:0)

"\[*\]"应该是"\\[*\\]"