[英]hide webBrowser scrollbar wpf
我有一个网络浏览器,我正在加载一个 .html 文件。 问题是,虽然我已经将 ScrollViewer.VerticalScrollBarVisibility 设置为“隐藏”,但滚动条仍然可见。
我也尝试过这种方法,但它不起作用
<WebBrowser x:Name="personalizedWebBrowser" HorizontalAlignment="Left" VerticalAlignment="Top"
ScrollViewer.CanContentScroll="False"
ScrollViewer.HorizontalScrollBarVisibility="Hidden"
ScrollViewer.VerticalScrollBarVisibility="Hidden"
LoadCompleted="wb_LoadCompleted"/>
private void wb_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
mshtml.IHTMLDocument2 dom = (mshtml.IHTMLDocument2)personalizedWebBrowser.Document;
dom.body.style.overflow = "hidden";
}
你能提出其他建议吗?
我通过在 wpf 项目中使用 windows 窗体 WebBrowser 控件解决了这个问题:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
string curDir = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\help";
System.Windows.Forms.Integration.WindowsFormsHost host =
new System.Windows.Forms.Integration.WindowsFormsHost();
System.Windows.Forms.WebBrowser webBrowser1 = new System.Windows.Forms.WebBrowser();
host.Child = webBrowser1;
webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
string sFileName = "file:///{0}/index.html";
webBrowser1.Url = new Uri(String.Format(sFileName, curDir));
webBrowser1.ScrollBarsEnabled = false;
this.grid1.Children.Add(host);
}
private void webBrowser1_DocumentCompleted(object sender, System.Windows.Forms.WebBrowserDocumentCompletedEventArgs e)
{
System.Windows.Forms.WebBrowser webBrowser1 = sender as System.Windows.Forms.WebBrowser;
if(webBrowser1==null)return;
webBrowser1.Document.Body.Style = "overflow:hidden";
}
grid1 用作 webBrowser1 的容器
我们还需要在项目中添加以下程序集引用:WindowsFormsIntegration、System.Windows.Forms
将 Microsoft.mshtml 添加到您的项目引用中。 您不需要更改 xaml 中的任何滚动属性,因为它们不是在使用 mshtml 时控制 WebBrowser 的属性。 在 LoadCompleted 函数中,您将对网络浏览器的实际文档进行如下更改:
private void webBrowserChat_LoadCompleted(object sender, NavigationEventArgs e)
{
mshtml.IHTMLDocument2 documentText = (IHTMLDocument2)webBrowserChat.Document;
//this will access the document properties
documentText.body.parentElement.style.overflow = "hidden";
// This will hide the scrollbar (Set to "auto" if you want to see when it passes the surfacelimit)
}
对于使用 VS2019 的 vb.net,修改 DevDude 的解决方案如下:
Private Sub webObjectLoaded(ByVal sender as WebBrowser, Byval as NavigationEventArgs)
Dim dom as MSHTML.IHTMLDocument2 = sender.Document
dom.body.style.overflow = "hidden"
End Sub
我在堆栈面板中显示了多个浏览器,因此调用代码如下所示:
Dim wb = New WebBrowser()
wb.NavigateToString(txt)
AddHandler wb.LoadCompleted, AddressOf webObjectLoaded
我从 COM 添加了对“Microsoft HTML 对象库”的引用,它似乎在引用列表中显示为 Interop.MSHTML。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.