0

スクリーンショットを作成するために、いくつかのDLLでWebBrowserを使用しています。

それが時々最大化されないという主な問題と私はそれがInternetExplorerの設定を必要とすることを推測します。

だから私の質問は、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コントロールがフォームのコントロール階層に追加されていることを確認してから(表示されるように)、そのフォームを最大化する必要があります。これを行う方法は、フォームのWindowStateプロパティをWindowState.Maximizedに設定することです。

于 2012-08-27T17:17:48.537 に答える
0

フォームイベントを実装しました。フォームresizeが最大化されたら、Webブラウザーのサイズをフォームのサイズに設定します。

それは私のアプリでうまく機能しました、私は誰のために懸念を共有します。

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