Visual Studio - перемещайте курсор без потери фокуса - PullRequest
0 голосов
/ 07 мая 2011

У меня есть несколько окон инструментов в моем пакете, и я хотел бы представить конкретную точку в документе, когда пользователь выполняет некоторые действия в окнах инструментов.

// Perform selection
TextSelection selection = activeDocument.Selection as TextSelection;
selection.MoveToAbsoluteOffset(offset, false);

// Show the currently selected line at the top of the editor if possible
TextPoint tp = (TextPoint)selection.TopPoint;
tp.TryToShow(vsPaneShowHow.vsPaneShowTop, null);

Он делает то, что я хочу, но, к сожалению, фокусируется на редакторе кода Visual Studio, убирая его из окна моего инструмента.Это не хорошо, если пользователь печатает в моем окне инструментов, и он внезапно перемещает фокус в редактор.

Есть ли другой способ сделать это без потери фокуса?

1 Ответ

2 голосов
/ 07 мая 2011
// Store active window before selecting
Window activeWindow = applicationObject.ActiveWindow;

// Perform selection
TextSelection selection = activeDocument.Selection as TextSelection;
selection.MoveToAbsoluteOffset(offset, false);

// Show the currently selected line at the top of the editor if possible
TextPoint tp = (TextPoint)selection.TopPoint;
tp.TryToShow(vsPaneShowHow.vsPaneShowTop, null);

// Restore focus to active window
activeWindow.Activate();
...