【发布时间】:2021-07-10 09:11:22
【问题描述】:
我正在开发 MS Word 插件,它旨在将选定的文本从拉丁语转换为西里尔语。方法如下:
public void L_to_C_Text_Convert()
{
//
string[] latin =
{"a","b","v","g","dž","d","đ","e","ž","z","i","k","lj","l","m","nj","n","j","o","p","r","s","t","ć","u","f","h","c","č","š"};
//
string[] cyrillic =
{"а","б","в","г","џ","д","ђ","е","ж","з","и","к","љ","л","м","њ","н","ј","о","п","р","с","т","ћ","у","ф","х","ц","ч","ш"};
//
for (int i = 0; i < 30; i++)
{
Application.Selection.Find.ClearFormatting();
Application.Selection.Find.Text = latin[i];
//
Application.Selection.Find.Replacement.ClearFormatting();
Application.Selection.Find.Replacement.Text = cyrillic[i];
//
object replaceAll = Word.WdReplace.wdReplaceAll;
//
Application.Selection.Find.Execute(ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing,
ref replaceAll, ref missing, ref missing, ref missing, ref missing);
}
}
它大部分工作正常,但有时它表现得很奇怪。当只选择一个字母时,程序会替换所选内容之外的所有字母(如所选字母)以及所选内容中的确切字母,当然,我不想要或不需要什么。有时即使在选择范围之外使用随机(似乎是随机的)字母也会这样做。
调试时,我在 Watch 上有 Application.Selection.Text,这让我更加不知道出了什么问题。
为什么它会这样工作,我应该怎么做才能防止在选择之外进行替换?
【问题讨论】:
标签: c# replace ms-word selection word-addins