0

我在一些 DLL 中使用 WebBrowser 来制作屏幕截图。

主要问题是它有时没有最大化,我猜它需要 Internet Explorer 的设置。

所以我的问题是如何通过 C# 最大化 WebBrowser 控制?

谢谢!

            Rectangle r = new Rectangle();

            r.X = cropToRectangle.X;
            r.Y = cropToRectangle.Y;
            r.Width = cropToRectangle.Width;
            r.Height = cropToRectangle.Height;

            Point p = new Point();
            p.X = scrollTo.X;
            p.Y = scrollTo.Y;

            var sb = Math.Max(SystemInformation.VerticalScrollBarWidth, SystemInformation.HorizontalScrollBarHeight);

            var size = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);

            using (var form =
                new FocuslessForm
                {
                    Width = size.Width + sb,
                    Height = size.Height + sb,
                    Padding = new Padding(0),
                    Margin = new Padding(0),
                    FormBorderStyle = FormBorderStyle.None,
                    Opacity = 0,
                    TabStop = false,
                    ShowInTaskbar = false
                })
            {
                var webBrowser1 = new WebBrowser
                    {

                        Padding = new Padding(0),
                        Margin = new Padding(0),
                        Dock = DockStyle.Fill,
                        Url = url,
                        TabStop = false
                    };
                form.Controls.Add(webBrowser1);

                var finished = false;

                webBrowser1.DocumentCompleted += delegate 
                {
                    webBrowser1.Document.Window.ScrollTo(p); 
                    finished = true; 
                };

                form.Show();

                while (!finished)
                {
                    Application.DoEvents();
                }

                image = CaptureBrowserScreenshot(webBrowser1, r);
                form.Close();
            }
4

2 回答 2

2

嗯,WebBrowser 是嵌入到您自己的程序窗口中的控件;它不会将 IE 作为单独的进程启动(尽管它会为渲染器和其他关键代码连接到 IE)。因此,控件的位置和大小取决于您嵌入它的位置。

我看到您正在将控件填充到表单中。这是一个很好的第一步。现在,您必须确保将 WebBrowser 控件添加到窗体的控件层次结构中(因此它会显示出来),然后您必须最大化该窗体。这样做的方法是将 Form 的 WindowState 属性设置为 WindowState.Maximized。

于 2012-08-27T17:17:48.537 回答
0

我实现了表单resize事件,当表单最大化时,我将网络浏览器大小设置为表单大小。

它在我的应用程序中运行良好,我为谁担心。

private void Form1_Resize(object sender, EventArgs e)
{
    webBrowser1.Size = this.Size;
}
于 2019-07-18T07:06:51.437 回答