Книга: C# для профессионалов. Том II

Отображение выходных данных в виде страницы HTML

Первый пример показывает, что базовые классы .NET существенно облегчают загрузку и обработку данных из Интернета. Однако до сих пор файлы выводились только как простой текст. В приложении желательно часто просматривать файл HTML с помощью интерфейса в стиле Internet Explorer, чтобы установить, как действительно выглядит документ Web. К сожалению, когда писалась эта книга, базовые классы .NET не включали никакой собственной поддержки для управления этими свойствами интерфейса в стиле Internet Explorer. Чтобы сделать это, необходимо либо программным путем вызвать Internet Explorer, либо воспользоваться элементом управления ActiveX WebBrowser, который существовал уже до появления .NET.

Одним из случаев, где интерфейс пользователя выводится в стиле Internet Explorer, является создание приложения C#, которое генерирует или допускает редактирование страниц HTML с последующим выводом сгенерированных страниц пользователю.

Программный запуск процесса Internet Explorer, направленного на заданную страницу Web, можно выполнить с помощью класса Process из пространства имен System.Diagnostics.

Process myProcess = new Process();
myProcess.StartInfо.FileName = "iexplore.exe";
myProcess.StartInfo.Arguments = "http://www.wrox.com";
myProcess.Start();

Однако IE при этом запускается и как отдельное окно, которое на самом деле не соединено и не находится под управлением приложения. Следовательно, хотя этот код приведен здесь для справки, такая техника не подходит для частого применения.

С другой стороны использование элемента управления WebBrowser означает, что выведенный браузер может составить интегральную часть приложения, и приложение получит полный контроль над работой браузера. Этот элемент управления достаточно развит, обладает большим числом методов свойств и событий.

Простейшим способом встроить этот элемент управления с помощью Visual Studio.NET является добавление элемента управления в панель инструментов. Для этого щелкните правой кнопкой мыши на Toolbox в VisualStudio.NET и выберите Customize Toolbox из контекстного меню, что вызывает диалоговое окно, приведенное ниже. Необходимо выбрать вкладку COM Component и щелкнуть на Microsoft Web Browser.


Элемент управления WebBrowser появится теперь в панели инструментов, можно щелкнуть та нем, чтобы поместить его на форму в приложении Windows на C#, так же, как любой другой элемент управления Windows Forms в .NET. Visual Studio.NET автоматически создает весь код взаимодействия COM, необходимый программе C# для работы в качестве клиента с этим элементом управления, чтобы можно было интерпретировать его как просто элемент управления .NET. Это будет продемонстрировано с помощью другого очень короткого примера DisplayWebPage, в котором выводится страница Web с жестко закодированным URI.

DisplayWebPage создается как стандартное приложение Windows C#, элемент управления ActiveX WebBrowser помещается в форму, как описано выше. По умолчанию Visual Studio.NET именует соответствующую переменную axWebBrowser1, и здесь будет оставлено имя по умолчанию. Затем в конструктор Form1 добавляется код:

public Form1()
 // Требуется для поддержки Windows Form Designer.
 InitializeComponent();
 int zero = 0;
 object oZero = zero;
 string emptyString = "";
 object oEmptyString = emptyString;
 axWebBrowser1.Navigate("http://www.wrox.com",
  ref oZero, ref oEmptyString,
  ref oEmptyString, ref oEmptyString);
}

В этом коде используется метод Navigate() элемента управления WebBrowser, который реально посылает запрос HTTP и выводит данные заданного URI. Первый параметр этого метода является строкой, содержащей URL, куда будет совершено перемещение. Остальные параметры соответственно позволяют: задать различные флажки; указать именованную рамку, в которой должен быть выведен браузер; определить любые данные POST, посылаемые с запросом, и дополнительную информацию заголовка HTTP. Используемых по умолчанию нулевых значений и пустых строк будет в данном случае достаточно. Эти параметры задаются в элементе управления как необязательные, но C# не поддерживает необязательные параметры, поэтому нужно определить их явно. Необходимо также явно объявить объектные ссылки для этих переменных, так как они передаются только по ссылке.

Вызов метода Navigate() с параметрами, как показано выше, имеет в принципе тот же результат, как и ввод URL в Internet Explorer для перехода к странице Web. Это единственный код, который необходимо добавить в проект DisplayWebPage вручную. При выполнении этого примера будет получен следующий результат (Visual Studio.NET также использовалась для изменения текста заголовка основной формы).


Отметим, что вывод страницы Web таким образом требует только унаследованного элемента управления WebBrowser, не нужно использовать никакие классы из пространства имен System.Net.

Оглавление книги

Оглавление статьи/книги

Генерация: 1.872. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз