【问题标题】:Stop Dragging from a WPF WebBrowser control停止从 WPF WebBrowser 控件拖动
【发布时间】:2011-01-02 21:24:14
【问题描述】:

我有一个 WPF 应用程序,其中包含一个 WebBrowser 控件。

目前,用户可以在WebBrowser 中选择某些内容,然后可以通过将内容拖到另一个应用程序并将其放在那里来复制内容。

我希望能够阻止用户这样做。我假设会有一个 "DragStart" 事件我可以捕获并取消 - 但我找不到这么简单的东西。

是否可以捕获拖动事件的开始并取消它?
有没有更好的方法来实现这一点?

【问题讨论】:

    标签: wpf drag-and-drop browser webbrowser-control


    【解决方案1】:

    您可以实现 IDocHostUIHandler::FilterDataObject 并过滤掉常见的剪贴板格式

    在文档准备好之前,您无法访问 WPF 浏览器的本机界面。不确定它是否适用于 WPF 浏览器类。 Windows 窗体中还有一个错误会阻止您自定义其 IDocHostUIHandler 的实现。

    您可以尝试一些 webbrowser ActiveX 的包装类,例如 http://www.codeproject.com/KB/miscctrl/csEXWB.aspx 中描述的类

    【讨论】:

    • 很抱歉没有尽快回复 - 优先级发生了变化,我忘记了这一点......我有一个相当空的 IDocHostUIHandler 接口实现在我的 WPF WebBrowser 上工作 - 我已经实现了 ShowContextMenu() 函数.但是,我不确定如何实现 FilterDataObject() - 我的尝试不起作用并且被忽略。你能提供更多细节吗?
    • 检查blog.csdn.net/jiangsheng/archive/2004/03/20/3800.aspx。不过,它在 MFC 中。不确定如何在托管代码中实现它。也许您可以编写一个原生 C++ 函数并通过 p-invoke 调用它?
    • 我已经设法通过确保 IDocHostUIHandler::GetDropTarget 返回 null 来完成这项工作。然后 FilterDataObject() 似乎没有被调用并且拖动被禁用。
    猜你喜欢
    • 2014-06-22
    • 2014-04-27
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多