c# webbrowser控件大小可以随所需要显示的html页面大小自动调整么?

如题所述

理论上可以

如果从理论上讲,WebBrowser是容器,里面html界面是内容,容器应该是可以适配内容的尺寸的,

public Form1()
{
    InitializeComponent();
    this.Load+=new EventHandler(Form1_Load);
    webBrowser1.DocumentCompleted+=new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
}
private void Form1_Load(object sender, EventArgs e)
{
    webBrowser1.Navigate("http://zhidao.baidu.com");
    webBrowser1.ScriptErrorsSuppressed = false;
    webBrowser1.ScrollBarsEnabled = false;
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    if (webBrowser1.ReadyState != WebBrowserReadyState.Complete) return;
    Size szb = new Size(webBrowser1.Document.Body.OffsetRectangle.Width,
        webBrowser1.Document.Body.OffsetRectangle.Height);//网页的尺寸
    webBrowser1.Size = szb;
    webBrowser1.Invalidate();
}

但是只有当网页全部加载完成(html代码全部加载完)之后, webbrowser才能获取到网页的Size,然后这个browser会重新改变自己的大小。


所以说,理论可以,实际很难看,而且加载一些内容较多的网站会很蛋疼,有很多网站编写不规范,很多js并没有写在网页的尾部跑, 也就是说你可能半秒就打开了,很多内容都出来了,但是因为一些js在运行,使得这个网站一直在“读取”的状态,可能2分钟都读不完,会导致这个browser一直不变大小。

更建议你适配屏幕的大小就行了, 反正有滚动条,如果网页过大,让用户自己去拖动就可以了。

温馨提示:内容为网友见解,仅供参考
第1个回答  2020-11-13
在winform中有一个控件可以显示html的内容,该控件就是webbrowser,设置它的DocumenText属性为HTML的内容即可。

在使用WebBrowser做UI的时候,我们有时不希望里面的链接被用户点击,更不希望弹出烦人的脚本错误提示框,也不希望用户能点出右键的IE菜单,要做到这些,其实都是很easy地…

//设置webBrowser
webBrowser1.ScriptErrorsSuppressed = true; //禁用错误脚本提示
webBrowser1.IsWebBrowserContextMenuEnabled = false; //禁用右键菜单
webBrowser1.WebBrowserShortcutsEnabled = false; //禁用快捷键
webBrowser1.AllowWebBrowserDrop = false;//禁止拖拽
webBrowser1.ScrollBarsEnabled = false;//禁止滚动条
禁用错误脚本提示 :将 WebBrowser控件的 ScriptErrorsSuppressed 设为 true
禁用右键菜单 :将 WebBrowser 的 IsWebBrowserContextMenuEnabled 设为 false
禁用快捷键 :将 WebBrowser 的 WebBrowserShortcutsEnabled 设为 false
禁用超链接 :超链接分为两种,一种是 当前窗口直接转向, 一种是 在新窗口中打开
当然窗口直接转向:将 WebBrowser 的 AllowNavigation 设为 false
禁用新窗口打开,需要处理 WebBrowser 的 NewWindow 事件

private void webBrowser1_NewWindow(object sender, CancelEventArgs e)
{
e.Cancel = true;
}
做完上面的工作,基本就完工了,还有最后一点需要注意,那就是 Drag-And-Drop 。记得将 WebBrowser 的 AllowWebBrowserDrop 设为 false
相似回答