Отображение документов HTML с помощью Internet Explorer
Изучение кода Internet Explorer в Show HTML
-
Откройте код Form1 в Редакторе кода и прокрутите его в самый верх, где находятся объявления общих переменных. Вы увидите следующий программный код:
Public Explorer As SHDocVw.InternetExplorer
Программа Show HTML начинается с объявления открытой переменной с именем Explorer, которая будет выполнять соединение программы с объектом Internet Explorer. Тип переменной ассоциирован с классом InternetExplorer из библиотеки shdocvw.dll, которая должна быть включена в ваш проект с помощью команды Add Reference (Добавить ссылку) из меню Project (Проект). (В этом проекте я сделал эту ссылку за вас.)
-
Отобразите в Редакторе кода процедуру события Button1_Click. Вы увидите следующий программный код:
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Explorer = New SHDocVw.InternetExplorer() Explorer.Visible = True Explorer.Navigate(ComboBox1.Text) End Sub
Процедура события Button1_Click запускается, когда пользователь щелкает на кнопке Показать HTML формы и пытается перейти к URL или документу HTML, указанному в комбинированном списке. Процедура события начинается с присвоения открытой переменной Explorer нового объекта Internet Explorer. Затем процедура делает окно Internet Explorer видимым и открывает с помощью метода Navigate в браузере документ, который соответствует выбору пользователя в комбинированном списке (значение, которое в настоящий момент содержится в свойстве Text объекта комбинированного списка). В этот момент приложение Show HTML заканчивает выполнять свою часть процесса навигации, и внимание пользователя переключается на открытое окно Internet Explorer, которое управляет соединением с интернетом (если необходимо) и позволяет пользователю видеть выбранный веб-сайт и щелкать на любых имеющихся на странице гиперссылках.
-
Отобразите в Редакторе кода процедуру события Form1_Load. Вы увидите следующий программный код:
Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load 'При запуске добавляем в выпадающий список несколько полезных 'веб-сайтов ComboBox1.Items.Add("http://www.microsoft.com") ComboBox1.Items.Add("http://www.microsoft.com/mspress") ComboBox1.Items.Add("http://msdn.microsoft.com/vbasic") ComboBox1.Items.Add("http://www.devx.com") End Sub
Когда программа Show HTML загружается, пользователю автоматически представляется список из нескольких "предпочтительных" веб-сайтов. Эти URL представлены в комбинированном списке, который я настроил с помощью метода Add при загрузке формы в процедуре события Form1_Load. Вы можете свободно добавлять в этот список ваши любимые URL, используя дополнительные операторы Add - объект комбинированного списка включает полосы прокрутки, когда это необходимо, и может вместить очень много элементов.
Следующий шаг: реакция на события Internet Explorer
В этой лекции вы использовали свойство Visible и метод Navigate для отображения документов HTML в объекте Internet Explorer.
Вы также можете управлять вашими действиями при навигации, реагируя на события, которые возникают в объекте Internet Explorer. У каждого элемента управления Visual Basic есть возможность во время своей работы отслеживать свои действия (события). Эти события могут включать все, начиная с простого перемещения мыши в элементе управления PictureBox (событие MouseMove ) до уведомления, что в элементе управления TextBox была нажата клавиша (событие KeyPress ). Объект Internet Explorer также генерирует события, на которые вы можете программно реагировать с помощью процедур событий. Они включают NavigateComplete2, DownloadBegin, DownloadComplete, TitleChange, DocumentComplete и OnQuit.
Если вы хотите использовать в своей программе события Internet Explorer, необходимо изменить оператор вашего кода программы, который объявляет переменную Internet Explorer. События, генерируемые компонентами COM, не попадают автоматически в список Method Name (Имя метода) в Code Editor (Редакторе кода). Однако можно включить эти события с помощью ключевого слова WithEvents при объявлении вашей переменной. В программе Show HTML, разработанной в этой лекции, вы должны следующим образом отредактировать раздел объявлений переменных:
Public WithEvents Explorer As SHDocVw.InternetExplorer
После того, как вы используете ключевое слово WithEvents, переменная Explorer автоматически появляется в раскрывающемся списке Class Name (Имя класса) окна Редактора кода. Когда вы выбираете объект Explorer, его события появляются в раскрывающемся списке Method Name (Имя метода). Затем можно выбрать каждое из событий, которым вы хотите управлять, и создать для него процедуру события. Вы увидите, как это работает, при рассмотрении измененной версии программы Show HTML.
В следующем упражнении вы напишите процедуру события, которая добавляет URL текущего веб-сайта, открытого в Internet Explorer, в комбинированный список программы Show HTML.
Использование события NavigateComplete2
- Если программа Show HTML не открыта, загрузите ее в среде разработки Visual Studio. Программа Show HTML расположена в папке c:\vbnet03sbs\ Гл.21\show html.
- Откройте в Редакторе кода раздел объявлений программы (область, расположенную сразу за тэгом "Windows Form Designer generated code" ("Код, автоматически созданный конструктором форм Windows")).
-
Добавьте к объявлению переменной Internet Explorer после ключевого слова Public ключевое слово WithEvents. Ваше объявление объекта должно выглядеть примерно так:
Public WithEvents Explorer As SHDocVw.InternetExplorer
- Переместите ваш курсор на следующую строку, чтобы Visual Studio могла распознать изменение WithEvents.
- Щелкните в Редакторе кода на стрелке раскрывающегося списка Class Name (Имя класса), а затем щелкните на объекте Explorer.
- Щелкните в Редакторе кода на стрелке раскрывающегося списка Method Name (Имя метода), а затем на событии NavigateComplete2. В Редакторе кода появится процедура события Explorer_NavigateComplete2 и ее параметры.
-
Введите в процедуре события Explorer_NavigateComplete2 следующий оператор программы:
ComboBox1.Items.Add(Explorer.LocationURL)
Ваша процедура должна выглядеть примерно так:
Private Sub Explorer_NavigateComplete2(ByVal pDisp As Object, _ ByRef URL As Object) Handles Explorer.NavigateComplete2 ComboBox1.Items.Add(Explorer.LocationURL) End Sub
Событие NavigateComplete2 возникает, когда объект Internet Explorer успешно загружает в браузер указанный документ - некорректная веб-страница или URL не сгенерируют этого события. В результате наблюдение за событием NavigateComplete2 является удобным способом отслеживания недавно загруженных веб-документов. Если вы используете свойство LocationURL объекта Explorer, то можете создать собственный список истории документов HTML. В этом примере я просто добавляю посещенный URL в комбинированный список в форме, так что вы можете легко посетить этот сайт снова, сделав всего один щелчок мышью. Однако вы также можете сохранять эту информацию, записывая этот URL в файл или в базу данных.
- Чтобы сохранить изменения, щелкните на кнопке Save All (Сохранить все) на панели инструментов.
- Чтобы запустить программу, щелкните на кнопке Start (Начать) стандартной панели инструментов.
- Щелкните на одном из веб-сайтов в комбинированном списке, а затем на кнопке Показать HTML.
- После установления соединения щелкните на нескольких гиперссылках, имеющихся на этом сайте, чтобы перейти к другим URL.
- Щелкните на программе Show HTML на панели задач, а затем снова щелкните на комбинированном списке. Новые посещенные вами сайты будут добавлены в комбинированный список Show HTML, как показано на рисунке вверху следующей страницы. Поэкспериментируйте с событием NavigateComplete2, посетив еще несколько веб-сайтов и посмотрев, как они добавляются в комбинированный список.
-
Когда закончите, закройте окна Internet Explorer, которые вы открыли. Затем щелкните на кнопке Закрыть в строке заголовка приложения Show HTML.
Вы закончили работать с объектом Internet Explorer в этой лекции. Хорошая работа!
Краткая справка по лекции 21
Чтобы | Сделайте следующее |
---|---|
Добавить в программу COM-ссылку на библиотеку объекта Internet Explorer | В меню Project (Проект) щелкните на команде Add Reference (Добавить ссылку), на закладке COM, на элементе Microsoft Internet Controls, на кнопке Select (Выбрать), а затем на OK. |
Изучить объектную модель Internet Explorer | Нажмите клавишу (F2), чтобы открыть Object Browser (Обозреватель объектов), щелкните на знаке "плюс" рядом с объектом Interop.SHDocVw, а затем на знаке "плюс" рядом с SHDocVw. Прокрутите список объектов вниз, а затем щелкните на объекте с именем Internet Explorer. Чтобы получить дополнительную информацию о членах объекта Internet Explorer, щелкните на этих членах на панели Members. |
Запустить в вашей программе Internet Explorer |
Объявите переменную типа SHDocVw.InternetExplorer, создайте новый экземпляр с помощью ключевого слова New и установите его свойство Visible на значение True. Например: Dim Explorer As SHDocVw.InternetExplorer Explorer = New SHDocVw.InternetExplorer Explorer.Visible = True |
Отобразить в объекте Internet Explorer веб-сайт |
Используйте метод Navigate. Например: Explorer.Navigate("http://www.microsoft.com/") |
Получить доступ к событиям внешнего объекта (такого, как Internet Explorer) |
Объявите ваш объект с помощью ключевого слова WithEvents. Например: Public WithEvents Explorer As _ SHDocVw.InternetExplorer |