WPF Web浏览器控件禁用删除

时间:2015-04-08 11:54:13

标签: c# wpf drag-and-drop wpf-controls webbrowser-control

有没有办法禁止将诸如记事本,单词等项目丢弃到WPF中的System.Windows.Controls.WebBrowser控件上。 我尝试了各种选项,例如 AllowDrop="False" - 不起作用。 试图捕获Drop,PreviewDrop,DragLeave,PreviewDragLeave,PreviewDragOver,PreviewDragEnter等事件 - 当我在WebBrowser控件上删除项目时,这些事件都不会触发。

2 个答案:

答案 0 :(得分:1)

使用构造函数或Xaml创建以下方法将阻止拖动更改webbrowsers当前状态:

private void webBrowser_Navigating(object sender, NavigatingCancelEventArgs e)
{
    // The WebBrowser control is checking the Uri 
    if (e.Uri.ToString() != "Place your url string here") //ex: "http://stackoverflow.com"
    {
        // Uri is not the same so it cancels the process
        e.Cancel = true;
    }
}

答案 1 :(得分:0)

正如您所提到的,Drop事件都没有被触发,看起来本机浏览器控件非常有限,这给您留下了两种可能:

  • 用户另一个浏览器控件,如wpfchromium

  • 或者在浏览器顶部和句柄中定义透明弹出窗口 甚至在它内部下降

<WebBrowser Height="300" Width="300" x:Name="wbBrowser"/>
    <Popup  Opacity="1" AllowsTransparency="True" IsOpen="True" Placement="Center" 
     PlacementTarget="{Binding ElementName=wbBrowser}" >
        <Border  Background="Black" Opacity="0.01" 
         Width="300" Height="300">
        </Border>
    </Popup>

此解决方案完全没有问题,还需要更多逻辑handle when the popup's parent control moves ..

...如果你的主要内容是html:

,你也可能会发现这个解决方案很有帮助

How to disable drop on wpf webbrowser control