方法: マネージド HTML ドキュメント オブジェクト モデルの HTML ソースにアクセスする
WebBrowser コントロールの DocumentStream プロパティと DocumentText プロパティは、最初に表示されたときに存在していた現在のドキュメントの HTML を返します。 ただし、AppendChild や InnerHtmlなどのメソッド呼び出しやプロパティ呼び出しを使用してページを変更した場合、これらの変更は、DocumentStream を呼び出して DocumentTextするときに表示されません。 DOM の最も up-to-date HTML ソースを取得するには、HTML 要素で OuterHtml プロパティを呼び出す必要があります。
次の手順では、動的ソースを取得し、別のショートカット メニューに表示する方法を示します。
OuterHtml プロパティを使用した動的ソースの取得
新しい Windows フォーム アプリケーションを作成します。 1 つの Formから始めて、それを
Form1
と呼び出します。Windows フォーム アプリケーションで WebBrowser コントロールをホストし、
WebBrowser1
名前を付けます。 詳細については、「方法: Windows フォーム アプリケーションに Web ブラウザー機能を追加する」を参照してください。アプリケーションに
CodeForm
という名前の 2 つ目の Form を作成します。CodeForm
に RichTextBox コントロールを追加し、その Dock プロパティをFill
に設定します。Code
と呼ばれるCodeForm
にパブリック プロパティを作成します。public string Code { get { if (richTextBox1.Text != null) { return (richTextBox1.Text); } else { return (""); } } set { richTextBox1.Text = value; } }
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
Button1
という名前の Button コントロールを Formに追加し、Click イベントを監視します。 イベントの監視の詳細については、「イベントの」を参照してください。Click イベント ハンドラーに次のコードを追加します。
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(); } } }
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
堅牢なプログラミング
Document の値を取得する前に必ずテストしてください。 現在のページの読み込みが完了していない場合は、Document またはその 1 つ以上の子オブジェクトが初期化されない可能性があります。
関連項目
- マネージド HTML ドキュメント オブジェクト モデルの使用
- WebBrowser コントロールの概要
.NET Desktop feedback