为什么所有Word.Range对象在更改其中一个对象时都会发生更改
本文关键字:一个对象 Range Word 对象 为什么 | 更新日期: 2023-09-27 18:21:33
这实际上是一个XY问题,但我想要两者的答案。我需要解决的是X,我的解决方案是Y,但它不起作用。我正在研究单词自动化,并使用vs10和msWord10。
我将从X开始,因为它最有意义!
X(真正的问题):
我得到了一个大的动态字符串,其中包含一些我想挑选的单词。我想挑选的单词在一个标签中——见下面的例子。
示例:
这是一些可以是任何内容的文本。#我想要获得的文本#!还有一些文本,可以是任何东西#我想获得更多的文本#!
"!#"是startTag,"#!"是endTag
输出:
我想要获得的文本
我想获得更多文本
Y(我对X的解决方案)
public void doSomething_TEST(string text, Word.Range range)
{
string commandsTagStart = "!#";
string commandsTagEnd = "#!";
Word.Range range1 = range;
Word.Range range2 = range;
range1.Find.Execute(commandsTagStart);
while (range1.Find.Found)
{
if (range1.Text.Contains(commandsTagStart))
{
range2.Find.Execute(commandsTagEnd);
if (range1.End < range2.Start)
{
Word.Range nameRange = document.Range(range1.End, range2.Start);
}
}
range1.Find.Execute(commandsTagStart);
}
}
我以前运行过这个代码,它运行得很好,但在这种情况下,范围对象被设置为单词文档的范围,这次不能这样做,因为我只想在特定的范围内搜索。
然而,当我第一次运行Find.Execute()时,问题就出现了,然后它找到了第一个命令TagStart,并将range1对象设置为该标记的范围,这很好,但由于某些原因,range2对象也会更改。
每次我改变一个范围对象(范围1或范围2)或对这些对象做一些事情时,它们都会改变,我不知道为什么?
我只需要解X,但我真的很感激Y的答案。
您对同一Range
有两个引用。用途:
Word.Range range2 = range.Duplicate