C# 为什么要在TextRange.Find(str)中添加?

C# 为什么要在TextRange.Find(str)中添加?,c#,textbox,vsto,powerpoint,add-in,C#,Textbox,Vsto,Powerpoint,Add In,我正在尝试使用外接程序格式化书面文本。按钮代码应该在幻灯片中找到字符串,并相应地进行更改 详细内容: 代码在幻灯片和每张幻灯片中的形状上循环。当它发现一个文本框或另一个包含字符串“CO2”的形状时,应该将其添加到列表中。然后它会纠正它 在一张特定的幻灯片中,有一个文本框仅包含“CO2”字符串,TextRange.Find(“CO2”)返回null,这会引发异常 string co2 = "CO2" if (shp.HasTextFrame == OfC.MsoTriState.msoTrue &

我正在尝试使用外接程序格式化书面文本。按钮代码应该在幻灯片中找到字符串,并相应地进行更改

详细内容:

代码在幻灯片和每张幻灯片中的形状上循环。当它发现一个文本框或另一个包含字符串“CO2”的形状时,应该将其添加到列表中。然后它会纠正它

在一张特定的幻灯片中,有一个文本框仅包含“CO2”字符串,TextRange.Find(“CO2”)返回null,这会引发异常

string co2 = "CO2"
if (shp.HasTextFrame == OfC.MsoTriState.msoTrue && shp.TextFrame.TextRange.Text.Contains(co2))
{
   int index = textRange.Text.IndexOf(co2);
   while (index != -1)
   {
      var textRangeCO2 = textRange.Find(co2, index);
   }
}
在这段代码中,textRangeCO2变为null时,其他文本框没有任何问题


这个特定的文本框可能有什么问题。当我将下一个文本框复制到同一个位置并将其中的字符串更改为“CO2”时,代码可以正常工作。

这有点令人惊讶。你确定文本真的是“二氧化碳”吗?可能是0而不是O,或者字符串中的某个地方有一个不可见的字符?正如您所看到的,它获取索引时没有任何问题,确保它不是“0”而是“O”。即使它包含附加字符,也必须过滤掉CO2部分。无论如何,我刚刚发现,这个文本框是从一个叫做“think cell”的图表创建软件插入的。如果在同一文本框中复制并粘贴为纯文本,则不会出现问题。我只是告诉用户有二氧化碳不会自动修正。