[英]WebBrowser control: how to maximize it
我在某些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();
}
嗯,WebBrowser是一个嵌入到您自己程序窗口中的控件。 它不会将IE作为单独的进程启动(尽管它确实将IE连接到渲染器和其他关键代码)。 因此,控件的位置和大小取决于嵌入它的位置。
我看到您正在将控件填充到表单中。 这是一个很好的第一步。 现在,您必须确保将WebBrowser控件添加到Form的Controls层次结构中(这样它将显示出来),然后必须最大化该Form。 方法是将窗体的WindowState属性设置为WindowState.Maximized。
我实现了窗体resize
事件,当窗体最大化时,我将Web浏览器的大小设置为窗体大小。
我的应用程式运作良好,值得分享。
private void Form1_Resize(object sender, EventArgs e)
{
webBrowser1.Size = this.Size;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.