В настоящее время я использую следующий метод, чтобы найти координаты Range
в документе:
private Rectangle GetRangeCoordinates(Window w, Range r)
{
int left = 0;
int top = 0;
int width = 0;
int height = 0;
w.GetPoint(out left, out top, out width, out height, r);
return new Rectangle(left, top, width, height);
}
Это работает очень хорошо, если Range
не находится на экране с довольно большим запасом(довольно много страниц), в этом случае я получаю следующее исключение:
System.Runtime.InteropServices.COMException (0x800A1066): Сбой команды в Microsoft.Office.Interop.Word.Window.GetPoint(Int32 & ScreenPixelsLeft, Int32 & ScreenPixelsTop, Int32 & ScreenPixelsWidth, Int32 & ScreenPixelsHeight, Object obj) в [ProjectName]. [TaskpaneName] .GetRangeCoordinates (Окно w, Диапазон r) в [... somePath.] [TaskpaneName] .cs: строка 66
Есть ли способ выяснить, находится ли Range
на экране или нет, так что я могу вызывать этот метод только тогда, когда онявляется?