Практическое руководство. Использование элемента управления WebBrowser в .NET Compact Framework
Обновлен: Ноябрь 2007
Платформа .NET Compact Framework поддерживает базовые функции элемента управления WebBrowser Windows Forms. Для следующих членов требуется программное обеспечение Microsoft Windows Mobile версии 5.0 для карманных ПК или смартфонов. Данный список может изменяться.
Свойство CanGoBack
Свойство CanGoForward
Свойство IsBusy
Свойство IsOffline
Свойство ReadyState
Свойство ScriptErrorsSuppressed
Событие CanGoBackChanged
Событие CanGoForwardChanged
Метод GoBack
Метод GoForward
Метод OnCanGoBackChanged
Метод OnCanGoForwardChanged
Метод Refresh
Следующие сведения применимы только к Windows Mobile 2003 для карманных ПК или смартфонов.
Метод Refresh вызывает исключение NotSupportedException.
Так как элемент управления WebBrowser может содержать дочерние элементы управления в форме HTML, невозможно определить, получил ли элемент WebBrowser фокус, отслеживая событие GotFocus. В качестве решения этого вопроса можно удалить другие элементы управления, которые могут получать фокус.
Свойству Url не присваивается значение WebBrowserNavigatingEventArgs, а возвращается пустая строка.
На устройствах, отличных от карманных ПК и смартфонов, под управлением Microsoft Windows CE 5.0 события Navigated и DocumentCompleted вызываются дважды при посещении нового URL-адреса. Эту ошибку планируется исправить в будущих версиях Windows CE.
Можно создать экземпляр WebBrowser, чтобы реагировать на событие HelpRequested для отображения интерактивной справки приложения.
Платформа .NET Compact Framework не поддерживает свойство Document и связанные с ним свойства и события, за исключением свойства DocumentText. Можно использовать свойство DocumentText для отображения HTML, например, предоставлять ссылки и простые HTML-формы, но .NET Compact Framework не поддерживает доступ к HTML-содержимому страницы.
Можно определить реакцию на форму с помощью свойства WebBrowserDocumentCompletedEventArgs.Url в коде, которое обрабатывает событие Navigating. В первой процедуре, представленной ниже, представлен пример кода.
В приложениях для смартфонов нельзя перейти за границы элемента управления WebBrowser. Чтобы решить эту проблему, можно отследить событие клавиатуры и передать фокус другому элементу управления. Во второй процедуре, представленной ниже, представлен пример кода.
Примечание. |
---|
Для этого примера требуется Windows Mobile 5.0 или .NET Framework 3.5. |
Дополнительные сведения об использовании элемента управления WebBrowser см. в разделе Практическое руководство. Добавление функциональности веб-обозревателя в приложения Windows Forms.
Сбор данных из встроенных элементов управления HTML
Для отображения HTML в элементе управления WebBrowser следует использовать свойство DocumentText. В этом HTML содержится форма со ссылкой и текстовое поле, в котором указывается URL-адрес.
Dim sb As New StringBuilder() sb.Append("<html><body>") sb.Append("<a href=") sb.Append("""") sb.Append("https://www.microsoft.com") sb.Append("""") sb.Append(">Microsoft</a><p>") sb.Append("Specify a URL:<br>") sb.Append("<form action=''><input type='text' name='address'/>") sb.Append("<br><input type='submit'>") sb.Append("</form></body></html>") webBrowser1.DocumentText = sb.ToString()
StringBuilder sb = new StringBuilder(); sb.Append("<html><body>"); sb.Append("<a href="); sb.Append("\""); sb.Append("https://www.microsoft.com"); sb.Append("\""); sb.Append(">Microsoft</a><p>"); sb.Append("Specify a URL:<br>"); sb.Append("<form action=''><input type='text' name='address'/>"); sb.Append("<br><input type='submit'>"); sb.Append("</form></body></html>"); webBrowser1.DocumentText = sb.ToString();
Чтобы определить, содержит ли URL-адрес ответ от формы, следует использовать событие Navigating. Если содержит, необходимо перейти на этот URL-адрес.
Private Sub webBrowser1_Navigating(ByVal sender As Object, ByVal e As WebBrowserNavigatingEventArgs) Handles webBrowser1.Navigating Dim x As Integer ' The URL contains the results of the ' HTML form following the equals sign. x = e.Url.ToString().LastIndexOf("=") If x <> - 1 Then Dim Redirect As String Redirect = e.Url.ToString().Substring((x + 1)) If Redirect <> "" Then ' Error handling code omitted in this example. ' Uri constructor throws a UriFormatException if there's ' an error. webBrowser1.Navigate(New Uri(Redirect)) Else MessageBox.Show("Specify a URL") End If End If End Sub
private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e) { int x; // The URL contains the results of the // HTML form following the equals sign. x = e.Url.ToString().LastIndexOf("="); if (x != -1) { string Redirect; Redirect = e.Url.ToString().Substring(x + 1); if (Redirect != "") { // Error handling code omitted in this example. // Uri constructor throws a UriFormatException if there's // an error. webBrowser1.Navigate(new Uri(Redirect)); } else { MessageBox.Show("Specify a URL"); } } }
В предыдущем примере кода на Visual Basic обработчик событий Navigating уже связан с элементом управления. Этот обработчик событий в C# необходимо объявить следующим образом:
this.webBrowser1.Navigating += new System.Windows.Forms.WebBrowserNavigatingEventHandler(this.webBrowser1_Navigating);
Перемещение за пределы элемента управления WebBrowser на смартфоне
В следующем примере кода фокус передается другому элементу управления при нажатии клавиши СТРЕЛКИ ВВЕРХ.
Элемент управления WebBrowser использует логику переходов из Microsoft Pocket Internet Explorer, что позволяет пользователю переходить на различные ссылки и встроенные элементы управления на веб-узле, отображаемые элементом управления. Поведение при переходах по умолчанию можно переопределить с помощью свойства KeyPreview.
В следующем примере кода предполагается, что свойству KeyPreview присвоено значение true в конструкторе формы или в коде, обрабатывающем событие Load формы.
Protected Overrides Sub OnKeyDown(ByVal keyg As KeyEventArgs) If keyg.KeyCode = Keys.Up Then textBox1.Focus() End If MyBase.OnKeyDown(keyg)
protected override void OnKeyDown(KeyEventArgs keyg) { if (keyg.KeyCode == Keys.Up) { textBox1.Focus(); } base.OnKeyDown(keyg); }
Компиляция кода
Для этого примера требуются ссылки на следующие пространства имен:
См. также
Задачи
Практическое руководство. Добавление функциональности веб-обозревателя в приложения Windows Forms