示例#1
0
        private void Test2Button_Click(object sender, EventArgs e)
        {
            // This is demonstration of async browser construction.
            // .Load method raises exception with message 'CefBrowser is not ready.', cause underlying CefBrowser doesn't created.

            // I propose to that .Load method locks internally and wait for CefBrowser (AfterHandleCreated message).
            // But note, that lock also lock main message loop (if called from UI thread), or we can got inifinite lock, if no message arrived - so some timeout required.
            // If we have plans to support singlethreaded cef message loop - we must process cef message loop.
            // We can give name for event AfterHandleCreated as BrowserReady or Ready.
            // Note, that this is event only signals, that browser constructed, - this is NOT DocumentReady or Navigated.
            // Also .BrowserReady event is good, but method to perform sync operation also can be useful.

            PrepareTest();
            browser        = new CefFormsWebBrowser();
            browser.Parent = panel;
            browser.Dock   = DockStyle.Fill;
            try
            {
                browser.Load("http://google.com");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
示例#2
0
        private void Test2Button_Click(object sender, EventArgs e)
        {
            // This is demonstration of async browser construction.
            // .Load method raises exception with message 'CefBrowser is not ready.', cause underlying CefBrowser doesn't created.
            
            // I propose to that .Load method locks internally and wait for CefBrowser (AfterHandleCreated message).
            // But note, that lock also lock main message loop (if called from UI thread), or we can got inifinite lock, if no message arrived - so some timeout required.
            // If we have plans to support singlethreaded cef message loop - we must process cef message loop.
            // We can give name for event AfterHandleCreated as BrowserReady or Ready.
            // Note, that this is event only signals, that browser constructed, - this is NOT DocumentReady or Navigated.
            // Also .BrowserReady event is good, but method to perform sync operation also can be useful.

            PrepareTest();
            browser = new CefFormsWebBrowser();
            browser.Parent = panel;
            browser.Dock = DockStyle.Fill;
            try
            {
                browser.Load("http://google.com");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
示例#3
0
 private void PrepareTest()
 {
     if (browser != null)
     {
         browser.Dispose();
         browser = null;
     }
 }
示例#4
0
        public TransparentPanel(CefFormsWebBrowser browserControl)
            : base()
        {
            if (browserControl != null)
                _browserControl = browserControl;

            this.TabStop = true;
            this.SetStyle(ControlStyles.Selectable, true);
        }
        void MainForm_Shown(object sender, EventArgs e)
        {
            WebBrowser        = new CefFormsWebBrowser("http://google.com", new BrowserSettings());
            WebBrowser.Parent = MainForm;
            WebBrowser.Dock   = DockStyle.Fill;
            WebBrowser.WaitForLoadCompletion();
            WebBrowser.BeforeResourceLoadHandler = this;

            waitCreated.Set();
        }
示例#6
0
        void MainForm_Shown(object sender, EventArgs e)
        {
            WebBrowser = new CefFormsWebBrowser("http://google.com", new BrowserSettings());
            WebBrowser.Parent = MainForm;
            WebBrowser.Dock = DockStyle.Fill;
            WebBrowser.WaitForLoadCompletion();
            WebBrowser.BeforeResourceLoadHandler = this;

            waitCreated.Set();
        }
示例#7
0
        private void Test1Button_Click(object sender, EventArgs e)
        {
            // This is "default" usage of control.
            // We don't call CEF.Initialization - it's called implicitly by CefWebBrowser constructor.
            // Note, that CEF.Shutdown must called explicitly.
            // Also, CEF.Shutdown now is safe to call, even if CEF.Initialization not called before.

            PrepareTest();
            browser = new CefFormsWebBrowser("http://google.com", new BrowserSettings());
            browser.Parent = panel;
            browser.Dock = DockStyle.Fill;
        }
示例#8
0
        public TestEventProxy()
        {
            InitializeComponent();

            browser = new CefFormsWebBrowser(testURL, new BrowserSettings());
            browser.Dock = DockStyle.Fill;
            this.toolStripContainer1.ContentPanel.Controls.Add(browser);

            eventProxy = new TransparentPanel(browser);
            eventProxy.Dock = DockStyle.Fill;
            this.toolStripContainer1.ContentPanel.Controls.Add(eventProxy);
        }
示例#9
0
        private void Test1Button_Click(object sender, EventArgs e)
        {
            // This is "default" usage of control.
            // We don't call CEF.Initialization - it's called implicitly by CefWebBrowser constructor.
            // Note, that CEF.Shutdown must called explicitly.
            // Also, CEF.Shutdown now is safe to call, even if CEF.Initialization not called before.

            PrepareTest();
            browser        = new CefFormsWebBrowser("http://google.com", new BrowserSettings());
            browser.Parent = panel;
            browser.Dock   = DockStyle.Fill;
        }
示例#10
0
 public Browser()
 {
     InitializeComponent();
     Text = "CefSharp";
     _browserControl = new CefFormsWebBrowser(cefSharpHomeUrl, new BrowserSettings());
     _browserControl.Dock = DockStyle.Fill;
     _browserControl.PropertyChanged += HandleBrowserPropertyChanged;
     _browserControl.ConsoleMessage += HandleConsoleMessage;
     _browserControl.BeforePopupHandler = this;
     _browserControl.BeforeResourceLoadHandler = this;
     _browserControl.AfterResponseHandler = this;
     toolStripContainer.ContentPanel.Controls.Add(_browserControl);
 }