我正在编写一个具有WebBrowser控件的Windows窗体应用程序(C#)(在其他一些按钮和文本框中)。我希望能够在表单上的任何位置删除文件。问题是,默认情况下,WebBrowser将尝试渲染任何放入其控件中的文件;我不想要这个,因为我必须首先对文件执行一些预处理。 WebBrowser控件提供名为AllowWebBrowserDrop的属性,我将其设置为false以禁用此行为。但是,结果是我无法在WebBrowser控件上删除任何内容(“不允许”反馈)。 WebBrowser控件占用了大部分空间,因此如果你不得不将文件放在某处的松弛空间中,它会有点蹩脚。如何在我的表单上的任何位置启用删除文件而不让WebBrowser控件尝试呈现它?
我想我应该补充一点,我的表单上的AllowDrop设置为true,并且具有DragEnter和DragDrop的处理程序。我将WebBrowser上的AllowWebBrowserDrop设置为false。其他一切都有默认设置。
答案 0 :(得分:2)
根据您使用WebBrowser
执行的操作,您可以处理Navigating
事件,该事件会在浏览器导航之前触发。然后通过检查URL确定是否要处理丢弃。例如:
private void browser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
if (e.Url.IsFile)
{
// Prevent navigation
e.Cancel = true;
// Fire your other OnDrop code
}
}
为此,您可以将AllowWebBrowserDrop
设置为true
。
如果这适用于您的商业案例,那就太好了;否则你可能会直接处理窗口消息,如上所述,这并不是很有趣。
答案 1 :(得分:0)
您是否可以添加一个透明背景色Panel
,其z顺序高于其上方的WebBrowser,让Panel处理掉落?