⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 webbrowsercontainer.cs

📁 破解的飞信源代码
💻 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 + -