Поделиться через


Практическое руководство. Добавление функциональности веб-браузера в приложения Windows Forms

Элемент управления WebBrowser позволяет добавить в приложение функциональность веб-браузера. По умолчанию он работает как веб-браузер. После загрузки начального URL-адреса путем установки свойства Url можно переходить по гиперссылкам, а также совершать переход вперед и назад по истории навигации с помощью сочетаний клавиш. Дополнительные функциональные возможности браузера по умолчанию доступны в контекстном меню, появляющемся при щелчке правой кнопки мыши. Вы также можете открывать новые документы, сбрасывая их в элемент управления. Кроме того, элемент управления WebBrowser имеет несколько свойств, методов и событий, которые можно использовать для реализации возможностей пользовательского интерфейса, аналогичных имеющимся в Internet Explorer.

В примере кода ниже реализуются адресная строка, стандартные кнопки браузера, меню Файл, строка состояния и строка заголовка, в которой содержится заголовок текущей страницы.

Пример

#using <System.Drawing.dll>
#using <System.dll>
#using <System.Windows.Forms.dll>

using namespace System;
using namespace System::Security::Permissions;

public ref class Form1: public System::Windows::Forms::Form
{
public:
   Form1()
   {
      //This call is required by the Windows Form Designer.
      InitializeComponent();
      
      //Add any initialization after the InitializeComponent() call
   }


private:

   //NOTE: The following procedure is required by the Windows Form Designer
   //It can be modified using the Windows Form Designer.  
   //Do not modify it using the code editor.
   System::Windows::Forms::MainMenu^ MainMenu1;
   System::Windows::Forms::MenuItem^ MenuItemFile;
   System::Windows::Forms::MenuItem^ MenuItemFileSaveAs;
   System::Windows::Forms::MenuItem^ MenuItemFilePageSetup;
   System::Windows::Forms::MenuItem^ MenuItemFilePrint;
   System::Windows::Forms::MenuItem^ MenuItemFilePrintPreview;
   System::Windows::Forms::MenuItem^ MenuItemFileProperties;
   System::Windows::Forms::TextBox^ TextBoxAddress;
   System::Windows::Forms::Button^ ButtonGo;
   System::Windows::Forms::Button^ backButton;
   System::Windows::Forms::Button^ ButtonForward;
   System::Windows::Forms::Button^ ButtonStop;
   System::Windows::Forms::Button^ ButtonRefresh;
   System::Windows::Forms::Button^ ButtonHome;
   System::Windows::Forms::Button^ ButtonSearch;
   System::Windows::Forms::Panel^ Panel1;
   System::Windows::Forms::WebBrowser ^ WebBrowser1;
   System::Windows::Forms::StatusBar^ StatusBar1;
   System::Windows::Forms::MenuItem^ MenuItem1;
   System::Windows::Forms::MenuItem^ MenuItem2;
   System::Windows::Forms::Button^ ButtonPrint;

   /// <summary>
   /// Required method for Designer support - do not modify
   /// the contents of this method with the code editor.
   /// </summary>
   void InitializeComponent()
   {
      this->MainMenu1 = gcnew System::Windows::Forms::MainMenu;
      this->MenuItemFile = gcnew System::Windows::Forms::MenuItem;
      this->MenuItemFileSaveAs = gcnew System::Windows::Forms::MenuItem;
      this->MenuItem1 = gcnew System::Windows::Forms::MenuItem;
      this->MenuItemFilePageSetup = gcnew System::Windows::Forms::MenuItem;
      this->MenuItemFilePrint = gcnew System::Windows::Forms::MenuItem;
      this->MenuItemFilePrintPreview = gcnew System::Windows::Forms::MenuItem;
      this->MenuItem2 = gcnew System::Windows::Forms::MenuItem;
      this->MenuItemFileProperties = gcnew System::Windows::Forms::MenuItem;
      this->TextBoxAddress = gcnew System::Windows::Forms::TextBox;
      this->ButtonGo = gcnew System::Windows::Forms::Button;
      this->backButton = gcnew System::Windows::Forms::Button;
      this->ButtonForward = gcnew System::Windows::Forms::Button;
      this->ButtonStop = gcnew System::Windows::Forms::Button;
      this->ButtonRefresh = gcnew System::Windows::Forms::Button;
      this->ButtonHome = gcnew System::Windows::Forms::Button;
      this->ButtonSearch = gcnew System::Windows::Forms::Button;
      this->ButtonPrint = gcnew System::Windows::Forms::Button;
      this->Panel1 = gcnew System::Windows::Forms::Panel;
      this->WebBrowser1 = gcnew System::Windows::Forms::WebBrowser;
      this->StatusBar1 = gcnew System::Windows::Forms::StatusBar;
      this->Panel1->SuspendLayout();
      this->SuspendLayout();

      // 
      // MainMenu1
      // 
      array<System::Windows::Forms::MenuItem^>^temp0 = {this->MenuItemFile};
      this->MainMenu1->MenuItems->AddRange( temp0 );
      this->MainMenu1->Name = "MainMenu1";

      // 
      // MenuItemFile
      // 
      this->MenuItemFile->Index = 0;
      array<System::Windows::Forms::MenuItem^>^temp1 = {this->MenuItemFileSaveAs,this->MenuItem1,this->MenuItemFilePageSetup,this->MenuItemFilePrint,this->MenuItemFilePrintPreview,this->MenuItem2,this->MenuItemFileProperties};
      this->MenuItemFile->MenuItems->AddRange( temp1 );
      this->MenuItemFile->Name = "MenuItemFile";
      this->MenuItemFile->Text = "&File";

      // 
      // MenuItemFileSaveAs
      // 
      this->MenuItemFileSaveAs->Index = 0;
      this->MenuItemFileSaveAs->Name = "MenuItemFileSaveAs";
      this->MenuItemFileSaveAs->Text = " Save &As";
      this->MenuItemFileSaveAs->Click += gcnew System::EventHandler( this, &Form1::MenuItemFileSaveAs_Click );

      // 
      // MenuItem1
      // 
      this->MenuItem1->Index = 1;
      this->MenuItem1->Name = "MenuItem1";
      this->MenuItem1->Text = "-";

      // 
      // MenuItemFilePageSetup
      // 
      this->MenuItemFilePageSetup->Index = 2;
      this->MenuItemFilePageSetup->Name = "MenuItemFilePageSetup";
      this->MenuItemFilePageSetup->Text = "Page Set&up...";
      this->MenuItemFilePageSetup->Click += gcnew System::EventHandler( this, &Form1::MenuItemFilePageSetup_Click );

      // 
      // MenuItemFilePrint
      // 
      this->MenuItemFilePrint->Index = 3;
      this->MenuItemFilePrint->Name = "MenuItemFilePrint";
      this->MenuItemFilePrint->Text = "&Print...";
      this->MenuItemFilePrint->Click += gcnew System::EventHandler( this, &Form1::MenuItemFilePrint_Click );

      // 
      // MenuItemFilePrintPreview
      // 
      this->MenuItemFilePrintPreview->Index = 4;
      this->MenuItemFilePrintPreview->Name = "MenuItemFilePrintPreview";
      this->MenuItemFilePrintPreview->Text = "Print Pre&view...";
      this->MenuItemFilePrintPreview->Click += gcnew System::EventHandler( this, &Form1::MenuItemFilePrintPreview_Click );

      // 
      // MenuItem2
      // 
      this->MenuItem2->Index = 5;
      this->MenuItem2->Name = "MenuItem2";
      this->MenuItem2->Text = "-";

      // 
      // MenuItemFileProperties
      // 
      this->MenuItemFileProperties->Index = 6;
      this->MenuItemFileProperties->Name = "MenuItemFileProperties";
      this->MenuItemFileProperties->Text = "P&roperties";
      this->MenuItemFileProperties->Click += gcnew System::EventHandler( this, &Form1::MenuItemFileProperties_Click );

      // 
      // TextBoxAddress
      // 
      this->TextBoxAddress->Location = System::Drawing::Point( 0, 0 );
      this->TextBoxAddress->Name = "TextBoxAddress";
      this->TextBoxAddress->Size = System::Drawing::Size( 240, 20 );
      this->TextBoxAddress->TabIndex = 1;
      this->TextBoxAddress->Text = "";
      this->TextBoxAddress->KeyDown += gcnew System::Windows::Forms::KeyEventHandler( this, &Form1::TextBoxAddress_KeyDown );

      // 
      // ButtonGo
      // 
      this->ButtonGo->Location = System::Drawing::Point( 240, 0 );
      this->ButtonGo->Name = "ButtonGo";
      this->ButtonGo->Size = System::Drawing::Size( 48, 24 );
      this->ButtonGo->TabIndex = 2;
      this->ButtonGo->Text = "Go";
      this->ButtonGo->Click += gcnew System::EventHandler( this, &Form1::ButtonGo_Click );

      // 
      // backButton
      // 
      this->backButton->Location = System::Drawing::Point( 288, 0 );
      this->backButton->Name = "backButton";
      this->backButton->Size = System::Drawing::Size( 48, 24 );
      this->backButton->TabIndex = 3;
      this->backButton->Text = "Back";
      this->backButton->Click += gcnew System::EventHandler( this, &Form1::backButton_Click );

      // 
      // ButtonForward
      // 
      this->ButtonForward->Location = System::Drawing::Point( 336, 0 );
      this->ButtonForward->Name = "ButtonForward";
      this->ButtonForward->Size = System::Drawing::Size( 48, 24 );
      this->ButtonForward->TabIndex = 4;
      this->ButtonForward->Text = "Forward";
      this->ButtonForward->Click += gcnew System::EventHandler( this, &Form1::ButtonForward_Click );

      // 
      // ButtonStop
      // 
      this->ButtonStop->Location = System::Drawing::Point( 384, 0 );
      this->ButtonStop->Name = "ButtonStop";
      this->ButtonStop->Size = System::Drawing::Size( 48, 24 );
      this->ButtonStop->TabIndex = 5;
      this->ButtonStop->Text = "Stop";
      this->ButtonStop->Click += gcnew System::EventHandler( this, &Form1::ButtonStop_Click );

      // 
      // ButtonRefresh
      // 
      this->ButtonRefresh->Location = System::Drawing::Point( 432, 0 );
      this->ButtonRefresh->Name = "ButtonRefresh";
      this->ButtonRefresh->Size = System::Drawing::Size( 48, 24 );
      this->ButtonRefresh->TabIndex = 6;
      this->ButtonRefresh->Text = "Refresh";
      this->ButtonRefresh->Click += gcnew System::EventHandler( this, &Form1::ButtonRefresh_Click );

      // 
      // ButtonHome
      // 
      this->ButtonHome->Location = System::Drawing::Point( 480, 0 );
      this->ButtonHome->Name = "ButtonHome";
      this->ButtonHome->Size = System::Drawing::Size( 48, 24 );
      this->ButtonHome->TabIndex = 7;
      this->ButtonHome->Text = "Home";
      this->ButtonHome->Click += gcnew System::EventHandler( this, &Form1::ButtonHome_Click );

      // 
      // ButtonSearch
      // 
      this->ButtonSearch->Location = System::Drawing::Point( 528, 0 );
      this->ButtonSearch->Name = "ButtonSearch";
      this->ButtonSearch->Size = System::Drawing::Size( 48, 24 );
      this->ButtonSearch->TabIndex = 8;
      this->ButtonSearch->Text = "Search";
      this->ButtonSearch->Click += gcnew System::EventHandler( this, &Form1::ButtonSearch_Click );

      // 
      // ButtonPrint
      // 
      this->ButtonPrint->Location = System::Drawing::Point( 576, 0 );
      this->ButtonPrint->Name = "ButtonPrint";
      this->ButtonPrint->Size = System::Drawing::Size( 48, 24 );
      this->ButtonPrint->TabIndex = 9;
      this->ButtonPrint->Text = "Print";
      this->ButtonPrint->Click += gcnew System::EventHandler( this, &Form1::ButtonPrint_Click );

      // 
      // Panel1
      // 
      this->Panel1->Controls->Add( this->ButtonPrint );
      this->Panel1->Controls->Add( this->TextBoxAddress );
      this->Panel1->Controls->Add( this->ButtonGo );
      this->Panel1->Controls->Add( this->backButton );
      this->Panel1->Controls->Add( this->ButtonForward );
      this->Panel1->Controls->Add( this->ButtonStop );
      this->Panel1->Controls->Add( this->ButtonRefresh );
      this->Panel1->Controls->Add( this->ButtonHome );
      this->Panel1->Controls->Add( this->ButtonSearch );
      this->Panel1->Dock = System::Windows::Forms::DockStyle::Top;
      this->Panel1->Location = System::Drawing::Point( 0, 0 );
      this->Panel1->Name = "Panel1";
      this->Panel1->Size = System::Drawing::Size( 624, 24 );
      this->Panel1->TabIndex = 11;

      // 
      // WebBrowser1
      // 
      this->WebBrowser1->AllowWebBrowserDrop = false;
      this->WebBrowser1->ScriptErrorsSuppressed = true;
      this->WebBrowser1->WebBrowserShortcutsEnabled = false;
      this->WebBrowser1->Dock = System::Windows::Forms::DockStyle::Fill;
      this->WebBrowser1->IsWebBrowserContextMenuEnabled = false;

      this->WebBrowser1->Location = System::Drawing::Point( 0, 24 );
      this->WebBrowser1->Name = "WebBrowser1";
      this->WebBrowser1->Size = System::Drawing::Size( 624, 389 );
      this->WebBrowser1->TabIndex = 10;
      this->WebBrowser1->StatusTextChanged += gcnew System::EventHandler( this, &Form1::WebBrowser1_StatusTextChanged );
      this->WebBrowser1->CanGoBackChanged += gcnew System::EventHandler( this, &Form1::WebBrowser1_CanGoBackChanged );
      this->WebBrowser1->Navigated += gcnew System::Windows::Forms::WebBrowserNavigatedEventHandler( this, &Form1::WebBrowser1_Navigated );
      this->WebBrowser1->CanGoForwardChanged += gcnew System::EventHandler( this, &Form1::WebBrowser1_CanGoForwardChanged );
      this->WebBrowser1->DocumentTitleChanged += gcnew System::EventHandler( this, &Form1::WebBrowser1_DocumentTitleChanged );

      // 
      // StatusBar1
      // 
      this->StatusBar1->Location = System::Drawing::Point( 0, 413 );
      this->StatusBar1->Name = "StatusBar1";
      this->StatusBar1->Size = System::Drawing::Size( 624, 16 );
      this->StatusBar1->TabIndex = 12;

      // 
      // Form1
      // 
      this->ClientSize = System::Drawing::Size( 624, 429 );
      this->Controls->Add( this->WebBrowser1 );
      this->Controls->Add( this->Panel1 );
      this->Controls->Add( this->StatusBar1 );
      this->Menu = this->MainMenu1;
      this->Name = "Form1";
      this->Text = "WebBrowser Example";
      this->Panel1->ResumeLayout( false );
      this->ResumeLayout( false );
   }


internal:

   static property Form1^ GetInstance 
   {
      Form1^ get()
      {
         if ( m_DefaultInstance == nullptr || m_DefaultInstance->IsDisposed )
         {
            System::Threading::Monitor::Enter( Form1::typeid );
            try
            {
               if ( m_DefaultInstance == nullptr || m_DefaultInstance->IsDisposed )
               {
                  m_DefaultInstance = gcnew Form1;
               }
            }
            finally
            {
               System::Threading::Monitor::Exit( Form1::typeid );
            }
         }

         return m_DefaultInstance;
      }
   }

private:
   static Form1^ m_DefaultInstance;

   // Displays the Save dialog box.
   void MenuItemFileSaveAs_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      this->WebBrowser1->ShowSaveAsDialog();
   }

   // Displays the Page Setup dialog box.
   void MenuItemFilePageSetup_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      this->WebBrowser1->ShowPageSetupDialog();
   }

   // Displays the Print dialog box.
   void MenuItemFilePrint_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      this->WebBrowser1->ShowPrintDialog();
   }

   // Displays the Print Preview dialog box.
   void MenuItemFilePrintPreview_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      this->WebBrowser1->ShowPrintPreviewDialog();
   }

   // Displays the Properties dialog box.
   void MenuItemFileProperties_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      this->WebBrowser1->ShowPropertiesDialog();
   }

   // Navigates to the URL in the address text box when 
   // the ENTER key is pressed while the text box has focus.
   void TextBoxAddress_KeyDown( Object^ /*sender*/, System::Windows::Forms::KeyEventArgs^ e )
   {
      if ( e->KeyCode == System::Windows::Forms::Keys::Enter &&  !this->TextBoxAddress->Text->Equals( "" ) )
      {
         this->WebBrowser1->Navigate( this->TextBoxAddress->Text );
      }
   }

   // Navigates to the URL in the address text box when 
   // the Go button is clicked.
   void ButtonGo_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      if (  !this->TextBoxAddress->Text->Equals( "" ) )
      {
         this->WebBrowser1->Navigate( this->TextBoxAddress->Text );
      }
   }

   // Updates the URL in TextBoxAddress upon navigation.
   void WebBrowser1_Navigated( Object^ /*sender*/, System::Windows::Forms::WebBrowserNavigatedEventArgs^ /*e*/ )
   {
      this->TextBoxAddress->Text = this->WebBrowser1->Url->ToString();
   }


   // Navigates WebBrowser1 to the previous page in the history.
   void backButton_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      this->WebBrowser1->GoBack();
   }

   // Disables the Back button at the beginning of the navigation history.
   void WebBrowser1_CanGoBackChanged( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      this->backButton->Enabled = this->WebBrowser1->CanGoBack;
   }

   // Navigates WebBrowser1 to the next page in history.
   void ButtonForward_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      this->WebBrowser1->GoForward();
   }

   // Disables the Forward button at the end of navigation history.
   void WebBrowser1_CanGoForwardChanged( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      this->ButtonForward->Enabled = this->WebBrowser1->CanGoForward;
   }

   // Halts the current navigation and any sounds or animations on 
   // the page.
   void ButtonStop_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      this->WebBrowser1->Stop();
   }

   // Reloads the current page.
   void ButtonRefresh_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      
      // Skip refresh if about:blank is loaded to avoid removing
      // content specified by the DocumentText property.
      if (  !this->WebBrowser1->Url->Equals( "about:blank" ) )
      {
         this->WebBrowser1->Refresh();
      }
   }

   // Navigates WebBrowser1 to the home page of the current user.
   void ButtonHome_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      this->WebBrowser1->GoHome();
   }

   // Navigates WebBrowser1 to the search page of the current user.
   void ButtonSearch_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      this->WebBrowser1->GoSearch();
   }

   // Prints the current document using the current print settings.
   void ButtonPrint_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      this->WebBrowser1->Print();
   }

   // Updates StatusBar1 with the current browser status text.
   void WebBrowser1_StatusTextChanged( Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      this->StatusBar1->Text = WebBrowser1->StatusText;
   }

   // Updates the title bar with the current document title.
   void WebBrowser1_DocumentTitleChanged( Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      this->Text = WebBrowser1->DocumentTitle;
   }
};

/// <summary>
/// The main entry point for the application.
/// </summary>

[STAThread]
int main()
{
   System::Windows::Forms::Application::Run( gcnew Form1 );
}
using System;
using System.Windows.Forms;
using System.Security.Permissions;

public class Form1 : Form
{
    public Form1()
    {
        // Create the form layout. If you are using Visual Studio,
        // you can replace this code with code generated by the designer.
        InitializeForm();

        // The following events are not visible in the designer, so
        // you must associate them with their event-handlers in code.
        webBrowser1.CanGoBackChanged +=
            new EventHandler(webBrowser1_CanGoBackChanged);
        webBrowser1.CanGoForwardChanged +=
            new EventHandler(webBrowser1_CanGoForwardChanged);
        webBrowser1.DocumentTitleChanged +=
            new EventHandler(webBrowser1_DocumentTitleChanged);
        webBrowser1.StatusTextChanged +=
            new EventHandler(webBrowser1_StatusTextChanged);

        // Load the user's home page.
        webBrowser1.GoHome();
    }

    // Displays the Save dialog box.
    private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
    {
        webBrowser1.ShowSaveAsDialog();
    }

    // Displays the Page Setup dialog box.
    private void pageSetupToolStripMenuItem_Click(object sender, EventArgs e)
    {
        webBrowser1.ShowPageSetupDialog();
    }

    // Displays the Print dialog box.
    private void printToolStripMenuItem_Click(object sender, EventArgs e)
    {
        webBrowser1.ShowPrintDialog();
    }

    // Displays the Print Preview dialog box.
    private void printPreviewToolStripMenuItem_Click(
        object sender, EventArgs e)
    {
        webBrowser1.ShowPrintPreviewDialog();
    }

    // Displays the Properties dialog box.
    private void propertiesToolStripMenuItem_Click(
        object sender, EventArgs e)
    {
        webBrowser1.ShowPropertiesDialog();
    }

    // Selects all the text in the text box when the user clicks it.
    private void toolStripTextBox1_Click(object sender, EventArgs e)
    {
        toolStripTextBox1.SelectAll();
    }

    // Navigates to the URL in the address box when
    // the ENTER key is pressed while the ToolStripTextBox has focus.
    private void toolStripTextBox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            Navigate(toolStripTextBox1.Text);
        }
    }

    // Navigates to the URL in the address box when
    // the Go button is clicked.
    private void goButton_Click(object sender, EventArgs e)
    {
        Navigate(toolStripTextBox1.Text);
    }

    // Navigates to the given URL if it is valid.
    private void Navigate(String address)
    {
        if (String.IsNullOrEmpty(address)) return;
        if (address.Equals("about:blank")) return;
        if (!address.StartsWith("http://") &&
            !address.StartsWith("https://"))
        {
            address = "http://" + address;
        }
        try
        {
            webBrowser1.Navigate(new Uri(address));
        }
        catch (System.UriFormatException)
        {
            return;
        }
    }

    // Updates the URL in TextBoxAddress upon navigation.
    private void webBrowser1_Navigated(object sender,
        WebBrowserNavigatedEventArgs e)
    {
        toolStripTextBox1.Text = webBrowser1.Url.ToString();
    }

    // Navigates webBrowser1 to the previous page in the history.
    private void backButton_Click(object sender, EventArgs e)
    {
        webBrowser1.GoBack();
    }

    // Disables the Back button at the beginning of the navigation history.
    private void webBrowser1_CanGoBackChanged(object sender, EventArgs e)
    {
        backButton.Enabled = webBrowser1.CanGoBack;
    }

    // Navigates webBrowser1 to the next page in history.
    private void forwardButton_Click(object sender, EventArgs e)
    {
        webBrowser1.GoForward();
    }

    // Disables the Forward button at the end of navigation history.
    private void webBrowser1_CanGoForwardChanged(object sender, EventArgs e)
    {
        forwardButton.Enabled = webBrowser1.CanGoForward;
    }

    // Halts the current navigation and any sounds or animations on
    // the page.
    private void stopButton_Click(object sender, EventArgs e)
    {
        webBrowser1.Stop();
    }

    // Reloads the current page.
    private void refreshButton_Click(object sender, EventArgs e)
    {
        // Skip refresh if about:blank is loaded to avoid removing
        // content specified by the DocumentText property.
        if (!webBrowser1.Url.Equals("about:blank"))
        {
            webBrowser1.Refresh();
        }
    }

    // Navigates webBrowser1 to the home page of the current user.
    private void homeButton_Click(object sender, EventArgs e)
    {
        webBrowser1.GoHome();
    }

    // Navigates webBrowser1 to the search page of the current user.
    private void searchButton_Click(object sender, EventArgs e)
    {
        webBrowser1.GoSearch();
    }

    // Prints the current document using the current print settings.
    private void printButton_Click(object sender, EventArgs e)
    {
        webBrowser1.Print();
    }

    // Updates the status bar with the current browser status text.
    private void webBrowser1_StatusTextChanged(object sender, EventArgs e)
    {
        toolStripStatusLabel1.Text = webBrowser1.StatusText;
    }

    // Updates the title bar with the current document title.
    private void webBrowser1_DocumentTitleChanged(object sender, EventArgs e)
    {
        this.Text = webBrowser1.DocumentTitle;
    }

    // Exits the application.
    private void exitToolStripMenuItem_Click(object sender, EventArgs e)
    {
        Application.Exit();
    }

    // The remaining code in this file provides basic form initialization and
    // includes a Main method. If you use the Visual Studio designer to create
    // your form, you can use the designer generated code instead of this code,
    // but be sure to use the names shown in the variable declarations here,
    // and be sure to attach the event handlers to the associated events.

    private WebBrowser webBrowser1;

    private MenuStrip menuStrip1;
    private ToolStripMenuItem fileToolStripMenuItem,
        saveAsToolStripMenuItem, printToolStripMenuItem,
        printPreviewToolStripMenuItem, exitToolStripMenuItem,
        pageSetupToolStripMenuItem, propertiesToolStripMenuItem;
    private ToolStripSeparator toolStripSeparator1, toolStripSeparator2;

    private ToolStrip toolStrip1, toolStrip2;
    private ToolStripTextBox toolStripTextBox1;
    private ToolStripButton goButton, backButton,
        forwardButton, stopButton, refreshButton,
        homeButton, searchButton, printButton;

    private StatusStrip statusStrip1;
    private ToolStripStatusLabel toolStripStatusLabel1;

    private void InitializeForm()
    {
        webBrowser1 = new WebBrowser();

        menuStrip1 = new MenuStrip();
        fileToolStripMenuItem = new ToolStripMenuItem();
        saveAsToolStripMenuItem = new ToolStripMenuItem();
        toolStripSeparator1 = new ToolStripSeparator();
        printToolStripMenuItem = new ToolStripMenuItem();
        printPreviewToolStripMenuItem = new ToolStripMenuItem();
        toolStripSeparator2 = new ToolStripSeparator();
        exitToolStripMenuItem = new ToolStripMenuItem();
        pageSetupToolStripMenuItem = new ToolStripMenuItem();
        propertiesToolStripMenuItem = new ToolStripMenuItem();

        toolStrip1 = new ToolStrip();
        goButton = new ToolStripButton();
        backButton = new ToolStripButton();
        forwardButton = new ToolStripButton();
        stopButton = new ToolStripButton();
        refreshButton = new ToolStripButton();
        homeButton = new ToolStripButton();
        searchButton = new ToolStripButton();
        printButton = new ToolStripButton();

        toolStrip2 = new ToolStrip();
        toolStripTextBox1 = new ToolStripTextBox();

        statusStrip1 = new StatusStrip();
        toolStripStatusLabel1 = new ToolStripStatusLabel();

        menuStrip1.Items.Add(fileToolStripMenuItem);

        fileToolStripMenuItem.DropDownItems.AddRange(
            new ToolStripItem[] {
                saveAsToolStripMenuItem, toolStripSeparator1,
                pageSetupToolStripMenuItem, printToolStripMenuItem,
                printPreviewToolStripMenuItem, toolStripSeparator2,
                propertiesToolStripMenuItem, exitToolStripMenuItem
            });

        fileToolStripMenuItem.Text = "&File";
        saveAsToolStripMenuItem.Text = "Save &As...";
        pageSetupToolStripMenuItem.Text = "Page Set&up...";
        printToolStripMenuItem.Text = "&Print...";
        printPreviewToolStripMenuItem.Text = "Print Pre&view...";
        propertiesToolStripMenuItem.Text = "Properties";
        exitToolStripMenuItem.Text = "E&xit";

        printToolStripMenuItem.ShortcutKeys = Keys.Control | Keys.P;

        saveAsToolStripMenuItem.Click +=
            new System.EventHandler(saveAsToolStripMenuItem_Click);
        pageSetupToolStripMenuItem.Click +=
            new System.EventHandler(pageSetupToolStripMenuItem_Click);
        printToolStripMenuItem.Click +=
            new System.EventHandler(printToolStripMenuItem_Click);
        printPreviewToolStripMenuItem.Click +=
            new System.EventHandler(printPreviewToolStripMenuItem_Click);
        propertiesToolStripMenuItem.Click +=
            new System.EventHandler(propertiesToolStripMenuItem_Click);
        exitToolStripMenuItem.Click +=
            new System.EventHandler(exitToolStripMenuItem_Click);

        toolStrip1.Items.AddRange(new ToolStripItem[] {
            goButton, backButton, forwardButton, stopButton,
            refreshButton, homeButton, searchButton, printButton});

        goButton.Text = "Go";
        backButton.Text = "Back";
        forwardButton.Text = "Forward";
        stopButton.Text = "Stop";
        refreshButton.Text = "Refresh";
        homeButton.Text = "Home";
        searchButton.Text = "Search";
        printButton.Text = "Print";

        backButton.Enabled = false;
        forwardButton.Enabled = false;

        goButton.Click += new System.EventHandler(goButton_Click);
        backButton.Click += new System.EventHandler(backButton_Click);
        forwardButton.Click += new System.EventHandler(forwardButton_Click);
        stopButton.Click += new System.EventHandler(stopButton_Click);
        refreshButton.Click += new System.EventHandler(refreshButton_Click);
        homeButton.Click += new System.EventHandler(homeButton_Click);
        searchButton.Click += new System.EventHandler(searchButton_Click);
        printButton.Click += new System.EventHandler(printButton_Click);

        toolStrip2.Items.Add(toolStripTextBox1);
        toolStripTextBox1.Size = new System.Drawing.Size(250, 25);
        toolStripTextBox1.KeyDown +=
            new KeyEventHandler(toolStripTextBox1_KeyDown);
        toolStripTextBox1.Click +=
            new System.EventHandler(toolStripTextBox1_Click);

        statusStrip1.Items.Add(toolStripStatusLabel1);

        webBrowser1.Dock = DockStyle.Fill;
        webBrowser1.Navigated +=
            new WebBrowserNavigatedEventHandler(webBrowser1_Navigated);

        Controls.AddRange(new Control[] {
            webBrowser1, toolStrip2, toolStrip1,
            menuStrip1, statusStrip1, menuStrip1 });
    }

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.Run(new Form1());
    }
}
Imports System.Windows.Forms
Imports System.Security.Permissions

Public Class Form1
    Inherits Form

    Public Sub New()

        ' Create the form layout. If you are using Visual Studio, 
        ' you can replace this code with code generated by the designer. 
        InitializeForm()

        ' Load the user's home page.
        webBrowser1.GoHome()

    End Sub


    ' Displays the Save dialog box.
    Private Sub saveAsToolStripMenuItem_Click( _
        ByVal sender As Object, ByVal e As EventArgs) _
        Handles saveAsToolStripMenuItem.Click

        webBrowser1.ShowSaveAsDialog()

    End Sub

    ' Displays the Page Setup dialog box.
    Private Sub pageSetupToolStripMenuItem_Click( _
        ByVal sender As Object, ByVal e As EventArgs) _
        Handles pageSetupToolStripMenuItem.Click

        webBrowser1.ShowPageSetupDialog()

    End Sub

    ' Displays the Print dialog box.
    Private Sub printToolStripMenuItem_Click( _
        ByVal sender As Object, ByVal e As EventArgs) _
        Handles printToolStripMenuItem.Click

        webBrowser1.ShowPrintDialog()

    End Sub

    ' Displays the Print Preview dialog box.
    Private Sub printPreviewToolStripMenuItem_Click( _
        ByVal sender As Object, ByVal e As EventArgs) _
        Handles printPreviewToolStripMenuItem.Click

        webBrowser1.ShowPrintPreviewDialog()

    End Sub

    ' Displays the Properties dialog box.
    Private Sub propertiesToolStripMenuItem_Click( _
        ByVal sender As Object, ByVal e As EventArgs) _
        Handles propertiesToolStripMenuItem.Click

        webBrowser1.ShowPropertiesDialog()

    End Sub

    ' Selects all the text in the text box when the user clicks it. 
    Private Sub toolStripTextBox1_Click( _
        ByVal sender As Object, ByVal e As EventArgs) _
        Handles toolStripTextBox1.Click

        toolStripTextBox1.SelectAll()

    End Sub

    ' Navigates to the URL in the address box when 
    ' the ENTER key is pressed while the ToolStripTextBox has focus.
    Private Sub toolStripTextBox1_KeyDown( _
        ByVal sender As Object, ByVal e As KeyEventArgs) _
        Handles toolStripTextBox1.KeyDown

        If (e.KeyCode = Keys.Enter) Then
            Navigate(toolStripTextBox1.Text)
        End If

    End Sub

    ' Navigates to the URL in the address box when 
    ' the Go button is clicked.
    Private Sub goButton_Click( _
        ByVal sender As Object, ByVal e As EventArgs) _
        Handles goButton.Click

        Navigate(toolStripTextBox1.Text)

    End Sub

    ' Navigates to the given URL if it is valid.
    Private Sub Navigate(ByVal address As String)

        If String.IsNullOrEmpty(address) Then Return
        If address.Equals("about:blank") Then Return
        If Not address.StartsWith("http://") And _
            Not address.StartsWith("https://") Then
            address = "http://" & address
        End If

        Try
            webBrowser1.Navigate(New Uri(address))
        Catch ex As System.UriFormatException
            Return
        End Try

    End Sub

    ' Updates the URL in TextBoxAddress upon navigation.
    Private Sub webBrowser1_Navigated(ByVal sender As Object, _
        ByVal e As WebBrowserNavigatedEventArgs) _
        Handles webBrowser1.Navigated

        toolStripTextBox1.Text = webBrowser1.Url.ToString()

    End Sub

    ' Navigates webBrowser1 to the previous page in the history.
    Private Sub backButton_Click( _
        ByVal sender As Object, ByVal e As EventArgs) _
        Handles backButton.Click

        webBrowser1.GoBack()

    End Sub

    ' Disables the Back button at the beginning of the navigation history.
    Private Sub webBrowser1_CanGoBackChanged( _
        ByVal sender As Object, ByVal e As EventArgs) _
        Handles webBrowser1.CanGoBackChanged

        backButton.Enabled = webBrowser1.CanGoBack

    End Sub

    ' Navigates webBrowser1 to the next page in history.
    Private Sub forwardButton_Click( _
        ByVal sender As Object, ByVal e As EventArgs) _
        Handles forwardButton.Click

        webBrowser1.GoForward()

    End Sub

    ' Disables the Forward button at the end of navigation history.
    Private Sub webBrowser1_CanGoForwardChanged( _
        ByVal sender As Object, ByVal e As EventArgs) _
        Handles webBrowser1.CanGoForwardChanged

        forwardButton.Enabled = webBrowser1.CanGoForward

    End Sub

    ' Halts the current navigation and any sounds or animations on 
    ' the page.
    Private Sub stopButton_Click( _
        ByVal sender As Object, ByVal e As EventArgs) _
        Handles stopButton.Click

        webBrowser1.Stop()

    End Sub

    ' Reloads the current page.
    Private Sub refreshButton_Click( _
        ByVal sender As Object, ByVal e As EventArgs) _
        Handles refreshButton.Click

        ' Skip refresh if about:blank is loaded to avoid removing
        ' content specified by the DocumentText property.
        If Not webBrowser1.Url.Equals("about:blank") Then
            webBrowser1.Refresh()
        End If

    End Sub

    ' Navigates webBrowser1 to the home page of the current user.
    Private Sub homeButton_Click( _
        ByVal sender As Object, ByVal e As EventArgs) _
        Handles homeButton.Click

        webBrowser1.GoHome()

    End Sub

    ' Navigates webBrowser1 to the search page of the current user.
    Private Sub searchButton_Click( _
        ByVal sender As Object, ByVal e As EventArgs) _
        Handles searchButton.Click

        webBrowser1.GoSearch()

    End Sub

    ' Prints the current document Imports the current print settings.
    Private Sub printButton_Click( _
        ByVal sender As Object, ByVal e As EventArgs) _
        Handles printButton.Click

        webBrowser1.Print()

    End Sub

    ' Updates the status bar with the current browser status text.
    Private Sub webBrowser1_StatusTextChanged( _
        ByVal sender As Object, ByVal e As EventArgs) _
        Handles webBrowser1.StatusTextChanged

        toolStripStatusLabel1.Text = webBrowser1.StatusText

    End Sub

    ' Updates the title bar with the current document title.
    Private Sub webBrowser1_DocumentTitleChanged( _
        ByVal sender As Object, ByVal e As EventArgs) _
        Handles webBrowser1.DocumentTitleChanged

        Me.Text = webBrowser1.DocumentTitle

    End Sub

    ' Exits the application.
    Private Sub exitToolStripMenuItem_Click( _
        ByVal sender As Object, ByVal e As EventArgs) _
        Handles exitToolStripMenuItem.Click

        Application.Exit()

    End Sub

    ' The remaining code in this file provides basic form initialization and 
    ' includes a Main method. If you use the Visual Studio designer to create
    ' your form, you can use the designer generated code instead of this code, 
    ' but be sure to use the names shown in the variable declarations here. 

    Private WithEvents webBrowser1 As WebBrowser

    Private menuStrip1 As MenuStrip
    Private WithEvents fileToolStripMenuItem, saveAsToolStripMenuItem, _
        printToolStripMenuItem, printPreviewToolStripMenuItem, _
        exitToolStripMenuItem, pageSetupToolStripMenuItem, _
        propertiesToolStripMenuItem As ToolStripMenuItem
    Private toolStripSeparator1, toolStripSeparator2 As ToolStripSeparator

    Private toolStrip1, toolStrip2 As ToolStrip
    Private WithEvents toolStripTextBox1 As ToolStripTextBox
    Private WithEvents goButton, backButton, forwardButton, _
        stopButton, refreshButton, homeButton, _
        searchButton, printButton As ToolStripButton

    Private statusStrip1 As StatusStrip
    Private toolStripStatusLabel1 As ToolStripStatusLabel

    Private Sub InitializeForm()

        webBrowser1 = New WebBrowser()

        menuStrip1 = New MenuStrip()
        fileToolStripMenuItem = New ToolStripMenuItem()
        saveAsToolStripMenuItem = New ToolStripMenuItem()
        toolStripSeparator1 = New ToolStripSeparator()
        printToolStripMenuItem = New ToolStripMenuItem()
        printPreviewToolStripMenuItem = New ToolStripMenuItem()
        toolStripSeparator2 = New ToolStripSeparator()
        exitToolStripMenuItem = New ToolStripMenuItem()
        pageSetupToolStripMenuItem = New ToolStripMenuItem()
        propertiesToolStripMenuItem = New ToolStripMenuItem()

        toolStrip1 = New ToolStrip()
        goButton = New ToolStripButton()
        backButton = New ToolStripButton()
        forwardButton = New ToolStripButton()
        stopButton = New ToolStripButton()
        refreshButton = New ToolStripButton()
        homeButton = New ToolStripButton()
        searchButton = New ToolStripButton()
        printButton = New ToolStripButton()

        toolStrip2 = New ToolStrip()
        toolStripTextBox1 = New ToolStripTextBox()

        statusStrip1 = New StatusStrip()
        toolStripStatusLabel1 = New ToolStripStatusLabel()

        webBrowser1.Dock = DockStyle.Fill

        menuStrip1.Items.Add(fileToolStripMenuItem)

        fileToolStripMenuItem.DropDownItems.AddRange( _
            New ToolStripItem() { _
                saveAsToolStripMenuItem, toolStripSeparator1, _
                pageSetupToolStripMenuItem, printToolStripMenuItem, _
                printPreviewToolStripMenuItem, toolStripSeparator2, _
                propertiesToolStripMenuItem, exitToolStripMenuItem _
            })

        fileToolStripMenuItem.Text = "&File"
        saveAsToolStripMenuItem.Text = "Save &As..."
        pageSetupToolStripMenuItem.Text = "Page Set&up..."
        printToolStripMenuItem.Text = "&Print..."
        printPreviewToolStripMenuItem.Text = "Print Pre&view..."
        propertiesToolStripMenuItem.Text = "Properties"
        exitToolStripMenuItem.Text = "E&xit"

        printToolStripMenuItem.ShortcutKeys = Keys.Control Or Keys.P

        toolStrip1.Items.AddRange(New ToolStripItem() { _
            goButton, backButton, forwardButton, stopButton, _
            refreshButton, homeButton, searchButton, printButton})

        goButton.Text = "Go"
        backButton.Text = "Back"
        forwardButton.Text = "Forward"
        stopButton.Text = "Stop"
        refreshButton.Text = "Refresh"
        homeButton.Text = "Home"
        searchButton.Text = "Search"
        printButton.Text = "Print"

        backButton.Enabled = False
        forwardButton.Enabled = False

        toolStrip2.Items.Add(toolStripTextBox1)
        toolStripTextBox1.Size = New System.Drawing.Size(250, 25)

        statusStrip1.Items.Add(toolStripStatusLabel1)

        Controls.AddRange(New Control() { _
            webBrowser1, toolStrip2, toolStrip1, _
            menuStrip1, statusStrip1, menuStrip1})
    End Sub

    <STAThread()> _
    Public Shared Sub Main()
        Application.EnableVisualStyles()
        Application.Run(New Form1())
    End Sub

End Class

Компиляция кода

Для этого примера требуются:

  • ссылки на сборки System, System.Drawing и System.Windows.Forms.

См. также