情境背景 - MS Word插件。
Langiage - C#
问题:
我正在尝试获取当前光标位置。我正在使用Application.Selection.Range
,因为它返回InsertionPoint
。按下每个Space,Tab
或Enter
键后,我会执行以下操作:MessageBox.Show(Application.Selection.Range.Start.ToString());
有时我看到MessageBox的值正确有时 {{ 1}}。为什么插入点索引有时会增加到128?我没有做任何具体的事情我只是输入一些文字,按空格键并查看有时正确的值,正如预期的那样,不是。
更新 实际上,我的问题更深入 - here我的另一个问题,详细描述。我的计划:
1)当用户输入actual_value_of_insertion_point_position+128
时,请记住插入点 - 它会返回下一个后续字母的位置。
2)如果用户键入了某个字母而前一个键是Space,则表示用户输入一些新单词的第一个字母。创建范围如下Space
并根据需要设置样式。
我的代码
Application.ActiveDocument.Range(remembered_pos,rem_pos+1)
答案 0 :(得分:1)
在有人按Space, Return or Tab
后,您可以尝试不同的设置范围的方法,假设您在任何这些“字符”之前搜索该字词。
以下是您可以放入If statement
的代码:
Word.Range r = appWRD.Application.Selection.Range;
Word.Range tmpR = r.Previous(Word.WdUnits.wdWord,2);
MessageBox.Show("-" + tmpR.Start.ToString() + "-" + (r.Start-1).ToString());
//set temporarily for checking word text
tmpR = appWRD.ActiveDocument.Range(tmpR.Start, r.Start -1 );
MessageBox.Show(string.Format("Word found: {0}!", tmpR.Text));
//this shows it doesn't include any tab or space
提示。 Word中有很多Range modification methods
但其中一些无效。根据我的测试,Previous
在这种情况下工作正常。
答案 1 :(得分:0)
我相信这是因为你正在使用全局钩子事件。但我不知道原因。我刚试过它。当我使用全局钩子时,范围的索引似乎增加了128.