Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
WPF-практика 3 Текст.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.59 Mб
Скачать

Отображение html-текста в WebBrowser из файла

Обратите внимание, что в предыдущем примере автоматически появляются полосы прокрутки, если HTML -документ не помещается в окне элемента WebBrowser. Фрагмент форматированного HTML -текста включать прямо в WebBrowser нельзя, поскольку XAML -редактор оболочки сразу начнет ругаться. Но во время выполнения загружать файл из кода можно.

В данном примере мы заранее создадим HTML -файл с простым форматированным текстом.

  • В Solution Explorer вызовите контекстное меню для узла WpfText3 и командой Add/Existing Item добавьте к проекту файл HtmlDoc.htm из прилагаемого каталога Source (или создайте свой HTML -документ и добавьте его к проекту той же командой)

Содержимое файла будет примерно таким

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title>Untitled Document</title>

<!--

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

-->

</head>

<body style="font-family:Arial, Helvetica, sans-serif">

<h2 align="center"><font color="#FF0000">Это небольшой фрагмент чистого HTML-текста</font></h2>

<ol>

<li>Шрифт Arial</li>

<li><font color="#0000FF">Цвет font color="#0000FF"</font></li>

<li><font face="Courier New">Шрифт Courier New </font></li>

<li><b>Стиль полужирный <b> </b></li>

<li><i>Стиль Italic <i> </i></li>

</ol>

</body>

</html>

  • Выделите этот файл и в панели Properties настройте его свойства так

    • Build Action = None

    • Copy to Output Directory=Copy if newer

  • В декларативный раздел XAML в контейнер <TabControl> добавьте новую вкладку <TabItem Header="HTML2">

  • Заполните ее следующим скриптом

<TabItem Header="HTML2" Selector.IsSelected="True">

<WebBrowser x:Name="webBrowser2" Initialized="webBrowser2_Initialized" />

</TabItem>

  • Обработчик события Initialized заполните так

private void webBrowser2_Initialized(object sender, EventArgs e)

{

Uri uri = new Uri(System.IO.Directory.GetCurrentDirectory() +

"\\HtmlDoc.htm", UriKind.Absolute);

this.webBrowser2.Navigate(uri);

}

Здесь мы применили несколько иной способ загрузки файла!

  • Запустите проект - получится примерно следующее

Вертикальную полосу прокрутки мне убрать в этом примере не удалось.

Отображение html-текста в WebBrowser из потока

Рассмотрим способ подключения HTML -текста из потока. В качестве источника текста будем использовать все тот же файл из предыдущего примера, полагая, что он будет находиться в одном каталоге со сборкой приложения в силу определенных нами ранее для него параметров.

  • В декларативный раздел XAML в контейнер <TabControl> добавьте новую вкладку <TabItem Header="HTML3">

  • Заполните ее следующим скриптом

<TabItem Header="HTML3" Selector.IsSelected="True">

<WebBrowser x:Name="webBrowser3" Initialized="webBrowser3_Initialized" />

</TabItem>

  • Обработчик события Initialized заполните так

private void webBrowser3_Initialized(object sender, EventArgs e)

{

Uri uri = new Uri("HtmlDoc.htm", UriKind.Relative);

System.IO.Stream source = Application.GetRemoteStream(uri).Stream;

this.webBrowser3.NavigateToStream(source);

}

  • Запустите проект - получится то же самое, что в предыдущем примере