【问题标题】:Prevent scrollbars with WPF WebBrowser displaying content使用 WPF WebBrowser 防止滚动条显示内容
【发布时间】:2010-12-27 01:30:56
【问题描述】:

我正在使用 WPF WebBrowser 组件来显示一些非常简单的 HTML 内容。但是,由于我事先不知道内容大小,因此当我加载某些数据集时,我目前在控件上会出现滚动条。

基本上,我如何强制(或以其他方式实现强制)WebBrowser 扩大大小,以便在不需要滚动条的情况下显示所有内容?

【问题讨论】:

    标签: c# wpf webbrowser-control scrollbar


    【解决方案1】:

    以前的解决方案的问题是它改变了控件的大小,并且由于浏览器控件不能被裁剪并且总是在其他 WPF 元素之上,它可能会覆盖其他元素。

    这是我的解决方案:

    Dim body = CType(WebBrowserControl.Document, mshtml.HTMLDocumentClass)
    body.documentElement.style.overflow = "hidden"
    

    问候,

    阿萨夫

    【讨论】:

      【解决方案2】:

      我猜你可以通过它的 Document 属性获取 webbrowser 组件内容的宽度和高度,该属性应该是 mshtml.HTMLDocument 类型。我相信您应该能够使用 body 或 documentElement 属性来获得所需的大小;像这样:

      mshtml.HTMLDocument htmlDoc = webBrowser.Document as mshtml.HTMLDocument;
      if (htmlDoc != null && htmlDoc.body != null)
      {
          mshtml.IHTMLElement2 body = (mshtml.IHTMLElement2)htmlDoc.body;
          webBrowser.Width = body.scrollWidth;
          webBrowser.Height = body.scrollHeight;
      }
      

      希望这有帮助,问候

      【讨论】:

      • 不幸的是,WebBrowser.Document 似乎从未设置过。这可能是我加载页面方式的副作用,我不确定。
      • 您能否发布一些有关如何加载页面的代码。谢谢
      • WebBrowser.NavigateToString,所有这些文件都在 Loaded 事件中发生。
      • 我猜你已经知道,与其他加载浏览器内容的方式相比,NavigateToString 没有什么特别之处;你会想要检查 LoadCompleted 事件 (msdn.microsoft.com/en-us/library/…) 并将你的重新缩放代码放在那里;此时文档对象应该被完全初始化
      • 傻我,混淆LoadedLoadCompleted
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-07
      • 1970-01-01
      • 2013-03-16
      • 2015-09-19
      • 2019-11-05
      • 2010-10-01
      • 2011-04-10
      相关资源
      最近更新 更多