我在.NET CF 3.5中使用WebBrowser控件用于Windows CE设备应用程序,出于安全考虑,需要禁用上下文菜单。我尝试过各种各样的东西,但这些东西似乎都不适用于使用.NET CF 3.5的移动设备:
我尝试将一个pictureBox放在WebBrowser上,并将其设置为透明。不幸的是,透明度不起作用,这最终成为我浏览器上的白盒子。
我尝试将新的自定义透明控件放在网页浏览器上,类似于this。
我已经尝试在html中编辑OnContextMenu元素,没有运气。
我尝试重写CreateParams,在浏览器上创建一个透明的PictureBox,作为解决方案之一here。
网上似乎有很多解决方案,但它们似乎都不适用于使用.NET CF 3.5的Windows CE。我相信这是因为WebBrowser的实现比完整的.NET 3.5简单得多。所以我的问题是:有没有办法禁用WebBrowser控件的上下文菜单?
答案 0 :(得分:1)
我没有尝试过这个特定的控件,所以我不知道它是否会起作用,但是你试过subclassing the browser control并拦截和丢弃导致上下文菜单出现在第一个中的消息地点?如果我必须解决同样的问题,这肯定是我先尝试的。
答案 1 :(得分:1)
如果您觉得自己不够负责管理WebBrowser,那么使用P /从C#调用本机HTML Control API(不是IWebBrowser2等)实际上并不难。
如果你这样做,那么你可以
或
去过那里,做到了,两者都有效。
修改强>
在这种情况下,有三种可能的复杂程度:
答案 2 :(得分:1)
这些可能的答案都不起作用。所以我放弃了尝试隐藏上下文菜单,只是为Navigating事件添加了一个事件处理程序,如果它与我最初发送给它的URL不同,则取消导航。它仍然显示上下文菜单,但点击任何内容都不会将其发送到另一个页面
void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e) {
//don't let users go anywhere else
if (e.Url != webBrowser1.Url) {
e.Cancel = true;
}
}
答案 3 :(得分:0)
Web CFrow中的WebBrowser控件实现是否不包含属性IsWebBrowserContextMenuEnabled
?
答案 4 :(得分:0)
我在寻找其他东西时遇到了this very interesting blog entry。我确定看起来它解决了上下文菜单问题(警告:我根本没有测试过这个)。