Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

How To Cause Navigation to Occur in Same WebBrowser Window


Summary

When hosting the Internet Explorer 4.x or later WebBrowser control in a Visual Basic application, you may want to have the navigation always occur in your application and not other Internet Explorer windows. If you handle the NewWindow2 event and set the Cancel flag equal to True, navigation is canceled completely. Since NewWindow2 does not provide you with the URL to navigate to as the Internet Explorer 3.x NewWindow event did, there doesn't appear to be any way to have the navigation occur in the same window.

Fortunately, Internet Explorer 4.x or later provide the WebBrowser_V1 object for compatibility with Internet Explorer 3.x. Using the WebBrowser_V1 object, you can have your application receive events from version 3.x, 4.x, and 5.x. That means that you can handle the version 3.x NewWindow event and then have the navigation occur in the current window.

↑ Back to the top


More information

In order to implement this functionality in your Visual Basic application, follow these step:
  1. Create a form with a WebBrowser control on it.
  2. In the declarations section of that form, add the following:
          Dim WithEvents Web_V1 as SHDocVwCtl.WebBrowser_V1
    						
    This will declare a WebBrowser_V1 variable that can receive events WebBrowser_V1 provides you with the NewWindow event.
  3. In the Form_Load event, add the following:
          Set Web_V1 = WebBrowser1.Object
    	  WebBrowser1.Navigate2 "http://www.microsoft.com/"
    						
    This sets the WebBrowser_V1 object to the existing Internet Explorer WebBrowser object.
  4. After the NewWindow2 event fires, the Web_V1_NewWindow event will fire with the linked URL as one of its input arguments. Remember not to set Cancel to True in NewWindow2. Also, set the Processed variable to True in the NewWindow event handler so that a new instance of Internet Explorer will not be created. The following code shows this event handler and the code necessary to navigate within the current window:
          Private Sub Web_V1_NewWindow(ByVal URL As String, _
                                       ByVal Flags As Long, _
                                       ByVal TargetFrameName As String, _
                                       PostData As Variant, _
                                       ByVal Headers As String, _
                                       Processed As Boolean)
             Processed = True
             WebBrowser1.Navigate URL
          End Sub
    					
  5. Right-click a link and select "Open in New Window" and you will find the link will still open inside your WebBrowser Control.

    Please note that Internet Explorer does not fire a NewWindow or NewWindow2 event when the user presses CTRL+N or points to New under the File menu and clicks Window.

↑ Back to the top


References

For additional information, please see the following article in the Microsoft Knowledge Base:
184876 How To Use the WebBrowser Control NewWindow2 Event
For more information, see the following MSDN web site: (c) Microsoft Corporation 1998, All Rights Reserved. Contributions by Scott Roberts, Microsoft Corporation

↑ Back to the top


Properties

Retired KB Content Disclaimer
This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.

↑ Back to the top


Keywords: KB185538, kbwebbrowser, kbhowto

↑ Back to the top

Article Info
Article ID : 185538
Revision : 4
Created on : 7/20/2012
Published on : 7/20/2012
Exists online : False
Views : 210