📄 webbrowsercontainer.cs
字号:
namespace Imps.Client.Pc.BizControls
{
using Imps.Client;
using System;
using System.Drawing;
using System.Windows.Forms;
public class WebBrowserContainer : Control
{
private string errorText;
private Label lblInfo;
private Image loadingImage;
private string loadingText;
private PictureBox pbLoadingImage;
private Panel pnlInfo;
private int splitHeight;
private Status status;
private BWebBrowser webBrowser;
public WebBrowserContainer()
{
this.loadingText = "加载中...";
this.errorText = "加载失败,请重试!";
this.splitHeight = 5;
this.InitControls();
this.loadingImage = ImpsResources.GetImage("Images.loading1.gif");
}
public WebBrowserContainer(object objectForScripting) : this()
{
this.webBrowser.set_ObjectForScripting(objectForScripting);
}
private void AdjustPosition()
{
switch (this.status)
{
case Status.Loading:
this.pbLoadingImage.Left = (base.Width - this.pbLoadingImage.Width) / 2;
this.lblInfo.Left = (base.Width - this.lblInfo.Width) / 2;
this.pbLoadingImage.Top = (((base.Height - this.pbLoadingImage.Height) - this.lblInfo.Height) - this.splitHeight) / 2;
this.lblInfo.Top = (this.pbLoadingImage.Top + this.pbLoadingImage.Height) + this.splitHeight;
return;
case Status.Completed:
break;
case Status.Error:
this.lblInfo.Left = (base.Width - this.lblInfo.Width) / 2;
this.lblInfo.Top = (base.Height - this.lblInfo.Height) / 2;
break;
default:
return;
}
}
private void Completed()
{
if (this.status != Status.Error)
{
this.status = Status.Completed;
this.webBrowser.Visible = true;
this.pnlInfo.Visible = false;
}
}
private void Error()
{
this.status = Status.Error;
this.webBrowser.Visible = false;
this.pnlInfo.Visible = true;
this.pbLoadingImage.Visible = false;
this.lblInfo.Text = this.errorText;
this.AdjustPosition();
}
private void InitControls()
{
this.BackColor = Color.White;
this.pnlInfo = new Panel();
this.pnlInfo.Dock = DockStyle.Fill;
this.pbLoadingImage = new PictureBox();
this.pbLoadingImage.Size = new Size(0x20, 0x20);
this.lblInfo = new Label();
this.lblInfo.set_AutoSize(true);
this.pnlInfo.Controls.Add(this.pbLoadingImage);
this.pnlInfo.Controls.Add(this.lblInfo);
this.webBrowser = new BWebBrowser();
this.webBrowser.Dock = DockStyle.Fill;
this.webBrowser.Visible = false;
this.webBrowser.add_DocumentCompleted(new WebBrowserDocumentCompletedEventHandler(this, (IntPtr) this.webBrowser_DocumentCompleted));
this.webBrowser.NavigateError += new EventHandler<BWebBrowserNavigatingEventArgs>(this, (IntPtr) this.webBrowser_NavigateError);
base.Controls.Add(this.pnlInfo);
base.Controls.Add(this.webBrowser);
}
private void Loading()
{
this.status = Status.Loading;
this.webBrowser.Visible = false;
this.pnlInfo.Visible = true;
if (this.loadingImage != null)
{
this.pbLoadingImage.Image = this.loadingImage;
this.pbLoadingImage.Size = this.loadingImage.Size;
}
this.lblInfo.Text = this.loadingText;
this.AdjustPosition();
}
public void Navigate(string urlString)
{
this.Loading();
this.webBrowser.Navigate(urlString);
}
public void Navigate(string urlString, byte[] postData)
{
this.Loading();
this.webBrowser.Navigate(urlString, "_self", postData, "Content-Type: application/x-www-form-urlencoded");
}
protected override void OnSizeChanged(EventArgs e)
{
this.AdjustPosition();
base.OnSizeChanged(e);
}
public void Refresh()
{
this.webBrowser.Refresh();
}
private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
this.Completed();
}
private void webBrowser_NavigateError(object sender, BWebBrowserNavigatingEventArgs e)
{
this.Error();
}
public string ErrorText
{
get
{
return this.errorText;
}
set
{
this.errorText = value;
}
}
public bool Loaded
{
get
{
return (this.status == Status.Completed);
}
}
public Image LoadingImage
{
get
{
return this.loadingImage;
}
set
{
this.loadingImage = value;
}
}
public string LoadingText
{
get
{
return this.loadingText;
}
set
{
this.loadingText = value;
}
}
public object ObjectForScripting
{
get
{
return this.webBrowser.get_ObjectForScripting();
}
set
{
this.webBrowser.set_ObjectForScripting(value);
}
}
public enum Status
{
Loading,
Completed,
Error
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -