次の方法で共有


方法 : マネージ HTML DOM (Document Object Model) の HTML ソースにアクセスする

WebBrowser コントロールの DocumentStream プロパティおよび DocumentText プロパティは、現在のドキュメントが最初に表示されたときに存在した HTML を返します。 ただし、AppendChildInnerHtml のようなメソッド呼び出しやプロパティ呼び出しを使用してページを変更すると、DocumentStreamDocumentText を呼び出したときにこれらの変更は表示されません。 DOM の最新の HTML ソースを取得するには、HTML 要素の OuterHtml プロパティを呼び出す必要があります。

次の手順では、動的ソースを取得し、別のショートカット メニューに表示する方法を示します。

OuterHtml プロパティを使用した動的ソースの取得

  1. 新しい Windows フォームアプリケーションを作成します。 まず、Form を 1 つ作成し、Form1 という名前を付けます。

  2. Windows フォーム アプリケーションで WebBrowser コントロールをホストし、WebBrowser1 という名前を付けます。 詳細については、「方法 : Windows フォーム アプリケーションに Web ブラウザーの機能を追加する」を参照してください。

  3. アプリケーション内で、CodeForm という 2 番目の Form を作成します。

  4. RichTextBox コントロールを CodeForm に追加し、その Dock プロパティを Fill に設定します。

  5. CodeForm に Code という パブリック プロパティを作成します。

    Public Property Code() As String
        Get
            If (RichTextBox1.Text IsNot Nothing) Then
                Code = RichTextBox1.Text
            Else
                Code = ""
            End If
        End Get
    
        Set(ByVal value As String)
            RichTextBox1.Text = value
        End Set
    End Property
    
            public string Code
            {
                get
                {
                    if (richTextBox1.Text != null)
                    {
                        return (richTextBox1.Text);
                    }
                    else
                    {
                        return ("");
                    }
                }
                set
                {
                    richTextBox1.Text = value;
                }
            }
    
  6. Button1 という名前の Button コントロールを Form に追加し、Click イベントを監視します。 イベントの監視の詳細については、「イベントの利用」を参照してください。

  7. Click イベント ハンドラーに次のコードを追加します。

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim elem As HtmlElement
    
        If (WebBrowser1.Document IsNot Nothing) Then
            Dim cf As New CodeForm()
            Dim elems As HtmlElementCollection = WebBrowser1.Document.GetElementsByTagName("HTML")
            If (elems.Count = 1) Then
                elem = elems(0)
                cf.Code = elem.OuterHtml
                cf.Show()
            End If
        End If
    End Sub
    
            private void button1_Click(object sender, EventArgs e)
            {
                HtmlElement elem;
    
                if (webBrowser1.Document != null)
                {
                    CodeForm cf = new CodeForm();
                    HtmlElementCollection elems = webBrowser1.Document.GetElementsByTagName("HTML");
                    if (elems.Count == 1)
                    {
                        elem = elems[0];
                        cf.Code = elem.OuterHtml;
                        cf.Show();
                    }
                }
            }
    

信頼性の高いプログラミング

Document の値を取得する前に、必ずテストしてください。 現在のページの読み込みが完了していない場合、Document またはその 1 つ以上の子オブジェクトが初期化されていない可能性があります。

参照

参照

WebBrowser コントロールの概要

その他の技術情報

マネージ HTML DOM (Document Object Model) の使用