2010-01-08 2 views
0

У меня есть приложение WPF, которое содержит элемент управления WebBrowser.Остановить перетаскивание из элемента управления WebBrowser WPF

В настоящее время пользователь может выбрать что-то в пределах WebBrowser и может копировать контент, перетаскивая его в другое приложение и отбрасывая его там.

Я хотел бы, чтобы пользователь мог это сделать. Я предположил, что будет событие "DragStart", которое я мог бы захватить и отменить, но я не смог найти что-то настолько простое.

Возможно ли захватить начало события перетаскивания и отменить его?
Есть ли лучший способ достичь этого?

ответ

1

Вы можете реализовать IDocHostUIHandler :: FilterDataObject и отфильтровывать распространенные форматы буфер обмена

Вы не получите доступ к родному интерфейсу браузера WPF, пока документ не будет готов. Не уверен, что он будет работать с классом браузера WPF. Существует также ошибка в Windows Forms, чтобы вы не могли настроить ее реализацию IDocHostUIHandler.

Вы можете попробовать обертку класс WebBrowser ActiveX, как, например, описанный в http://www.codeproject.com/KB/miscctrl/csEXWB.aspx

+0

Извините за не отвечая раньше - приоритеты изменились, и я забыл об этом ... я получил довольно пустую реализацию интерфейса IDocHostUIHandler, работающего на моем WPF WebBrowser - я реализовал функцию ShowContextMenu(). Однако я не уверен, как реализовать FilterDataObject() - мои попытки не работают и игнорируются. Можете ли вы предоставить более подробную информацию? – Grhm

+0

проверить http://blog.csdn.net/jiangsheng/archive/2004/03/20/3800.aspx. это в MFC. Не знаете, как реализовать его в управляемом коде. Может быть, вы можете написать собственную C++-функцию и вызвать ее через p-invoke? –

+0

Мне удалось получить эту работу, убедившись, что IDocHostUIHandler :: GetDropTarget возвращает null. Тогда FilterDataObject() не отображается, и перетаскивание отключено. – Grhm

Смежные вопросы