다음을 통해 공유


방법: .NET Compact Framework에서 WebBrowser 컨트롤 사용

업데이트: 2007년 11월

.NET Compact Framework에서는 Windows Forms WebBrowser 컨트롤에 대한 핵심 기능을 지원합니다. 다음 멤버를 사용하려면 Pocket PC 또는 Smartphone용 Windows Mobile 버전 5.0 소프트웨어가 필요합니다. 이 목록은 변경될 수 있습니다.

다음 고려 사항은 PocketPC용 Windows Mobile 2003 및 Smartphone용 Windows Mobile 2003에만 적용됩니다.

  • Refresh 메서드는 NotSupportedException 예외를 throw합니다.

  • WebBrowser 컨트롤에는 HTML 폼에 포함된 하위 컨트롤이 있을 수 있으므로 GotFocus 이벤트를 모니터링하여 WebBrowser 컨트롤에 포커스가 있는지 여부를 확인할 수 없습니다. 이 문제를 해결하려면 포커스가 있을 수 있는 다른 컨트롤을 제거하는 프로세스를 사용합니다.

  • Url 속성은 WebBrowserNavigatingEventArgs에 설정되지 않으며 빈 문자열을 반환합니다.

Microsoft Windows CE 5.0이 실행되는 Pocket PC 또는 Smartphone 이외의 장치에서 새 URL을 방문하면 NavigatedDocumentCompleted 이벤트가 모두 두 번 발생합니다. 이 오류는 이후 Windows CE 릴리스에서 수정될 예정입니다.

HelpRequested 이벤트에 응답하는 WebBrowser 인스턴스를 만들어 응용 프로그램용 온라인 도움말 항목을 표시할 수 있습니다.

.NET Compact Framework는 DocumentText 속성을 제외하고 Document 속성 및 해당 관련 속성과 이벤트를 지원하지 않습니다. DocumentText를 사용하여 링크 및 간단한 HTML 폼 등을 제공하기 위해 사용자에게 HTML을 표시할 수 있지만 .NET Compact Framework에서는 이 속성을 사용하여 웹 페이지의 HTML 콘텐츠에 액세스할 수 없습니다.

Navigating 이벤트를 처리하는 코드에서 WebBrowserDocumentCompletedEventArgs.Url 속성을 사용하여 폼에 대한 응답을 확인할 수 있습니다. 이어지는 첫 번째 절차에 코드 예제가 제공됩니다.

Smartphone 응용 프로그램에서 WebBrowser 컨트롤을 빠져 나올 수 없습니다. 이 문제를 해결하기 위해 키 이벤트를 검색하고 다른 컨트롤에 포커스를 설정할 수 있습니다. 이어지는 두 번째 절차에 코드 예제가 제공됩니다.

참고:

이 문제를 해결하려면 Windows Mobile 5.0 또는 .NET Compact Framework 3.5가 필요합니다.

WebBrowser 컨트롤 사용에 대한 일반 정보는 방법: Windows Forms 응용 프로그램에 웹 브라우저 기능 추가를 참조하십시오.

포함된 HTML 컨트롤에서 정보를 수집하려면

  1. DocumentText 속성을 사용하여 WebBrowser 컨트롤에 HTML을 표시합니다. 이 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();
    
  2. Navigating 이벤트를 사용하여 URL에 폼의 응답이 포함되는지 여부를 확인합니다. 응답이 포함되면 해당 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);
    

Smartphone에서 WebBrowser를 빠져 나오려면

  • 다음 코드 예제에서는 탐색 키에서 UP 키를 눌렀을 때 다른 컨트롤에 포커스를 설정합니다.

    WebBrowser 컨트롤은 Microsoft Pocket Internet Explorer의 탭 논리를 사용하여 이 컨트롤로 표시된 웹 사이트의 다른 링크 및 포함된 컨트롤로 이동할 수 있도록 합니다. KeyPreview 속성을 사용하여 이러한 기본 탭 동작을 재정의할 수 있습니다.

    다음 코드 예제에서는 폼의 생성자 또는 폼에 대한 Load 이벤트를 처리하는 코드에서 KeyPreview가 true로 설정되었다고 가정합니다.

    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 응용 프로그램에 웹 브라우저 기능 추가

개념

.NET Compact Framework 방법 항목