Как перехватить событие перетаскивания в Word? - PullRequest
1 голос
/ 21 июня 2011

Я создаю надстройку (с использованием C #) для Microsoft Word и хочу активировать некоторые функции, когда текст или изображение и т. Д. Перетаскиваются из любого источника и помещаются в Word. В общем, я хочу отловить событие Drop в Word. Однако я не могу найти какой-либо Word API, который помогает в этом. Можете ли вы помочь в этом?

Ответы [ 3 ]

3 голосов
/ 21 июня 2011

Такой зверь не существует.Лучший (легкий-простой) подход, на который вы можете надеяться, - это наблюдать за событием DocumentChange и пытаться отслеживать, что изменилось (оно будет находиться в текущем местоположении «Selection»).

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

0 голосов
/ 07 апреля 2017

Лучшая альтернатива - использовать прозрачное окно, которое вы накладываете поверх окна Word. Это окно открывается, когда начинается процесс перетаскивания и помещается поверх окна документа. Операция удаления затем принимается этим окном вместо Word, поэтому вы точно знаете, что пришло и в каком месте оно было удалено. Затем вы можете перевести эти координаты местоположения в соответствующее местоположение документа (используя метод RangeFromPoint() класса Window) и сделать все, что вам нужно сделать с удаленными данными. После этого вы просто скрываете свое прозрачное окно, и все возвращается в нормальное состояние.

Полная реализация этого подхода вместе с исходным кодом доступна в этой превосходной статье MSDN .

0 голосов
/ 21 сентября 2015

Иногда для этого можно использовать событие SelectionChange.Иногда, потому что выбор не всегда будет содержать отброшенный контент.Например, если вы поместите изображение в документ, оно не будет выделено.

...