Popup window webbrowser control

前端 未结 3 1716
情话喂你
情话喂你 2021-01-03 06:28

I am using a webbrowser control to get some information from a website. It has a detail link, which when clicked, opens a popup window and shows the details in the webbrowse

相关标签:
3条回答
  • 2021-01-03 06:48

    I recently ran across a very similar situation. In my case, the popup browser didn't share the session of the embedded browser. What I had to do was capture the NewWindow event and cancel it, then send the intended URL to the embedded browser. I needed to use the ActiveX browser instance because it gives you the URL that was attempting to launch. Here is my code:

    You will need to add the Microsoft Internet Controls COM reference to your project for this to work.

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            // this assumes that you've added an instance of WebBrowser and named it webBrowser to your form
            SHDocVw.WebBrowser_V1 axBrowser = (SHDocVw.WebBrowser_V1)webBrowser.ActiveXInstance;
    
            // listen for new windows
            axBrowser.NewWindow += axBrowser_NewWindow;
        }
    
        void axBrowser_NewWindow(string URL, int Flags, string TargetFrameName, ref object PostData, string Headers, ref bool Processed)
        {
            // cancel the PopUp event
            Processed = true;
    
            // send the popup URL to the WebBrowser control
            webBrowser.Navigate(URL);
        }
    }
    
    0 讨论(0)
  • 2021-01-03 06:48

    Refine to Middas answer...

    • add COM reference Microsoft Internet Controls.
    • use Middas Code.
    • in form_Load define your Uri and all your pop up will directly change your winform WebBrowser.
    0 讨论(0)
  • 2021-01-03 06:55

    this is dynamic version. it doesnt require statically bind com interop which is always problem in future versions of windows.

        public partial class Form10 : Form
    {
        public Form10()
        {
            InitializeComponent();
            webBrowser1.Navigate("about:blank");
            dynamic ax = this.webBrowser1.ActiveXInstance;
            ax.NewWindow += new NewWindowDelegate(this.OnNewWindow);
            this.webBrowser1.Navigate("http://google.com");
        }
        private delegate void NewWindowDelegate(string URL, int Flags, string TargetFrameName, ref object PostData, string Headers, ref bool Processed);
        private void OnNewWindow(string URL, int Flags, string TargetFrameName, ref object PostData, string Headers, ref bool Processed)
        {
            Processed = true;
            //your own logic
        }
    }
    
    0 讨论(0)
提交回复
热议问题