VSTO в Powerpoint: изменение видимости настраиваемой области задач в WindowSelectionChange перемещает выбранную фигуру - PullRequest
1 голос
/ 04 января 2012

Я думаю, что нашел ошибку.Я разрабатываю надстройку для Powerpoint 2010. Событие WindowSelectionChange вызывается, когда фигура (например, изображение) выбрана / снята.Однако, если я использую это событие, чтобы изменить свойство Visibility пользовательской панели задач, тогда фигура перемещается влево / вправо на слайде.Пример:

Private Sub Application_WindowSelectionChange(Sel As Microsoft.Office.Interop.PowerPoint.Selection) Handles Application.WindowSelectionChange
    cTaskPane.Visible = Not cTaskPane.Visible
End Sub

Я пытался отслеживать свойство Left фигуры, и оно не изменяется от начала до конца элемента WindowSelectionChange.Таким образом, это должно произойти потом.

Как мне этого избежать?Любой обходной путь?

1 Ответ

0 голосов
/ 17 июля 2014

Это потому, что ваша мышь держит форму, а форма смещается вправо, когда окно сокращается.

Более подробно, перемещение происходит в 4 этапа:

  1. Вы нажимаете кнопку мыши, вызывает изменение выбора окна, затем панель становится видимой, что приводит к уменьшению размера окна просмотра слайдов;
  2. Поскольку окно просмотра слайдов сжимается, а положение мыши остается неизменным, мышь перемещается вправо по отношению к слайду;
  3. Так как мышь нажимает, форма привязывается мышью, поэтому перемещайтесь в текущее положение мыши;
  4. Когда панель снова становится невидимой, окно просмотра слайдов снова меняет свой размер, форма снова соответственно перемещается.

Чтобы избежать этого, я предлагаю вам использовать событие WindowSelectionChange и проверить, является ли выделение формой (код в c #):

private void WindowSelectionChangedHandler(PowerPoint.Selection selection)
{
    if (selection.Type == PowerPoint.PpSelectionType.ppSelectionShapes)
    {
         //do your stuff
    }
}
...