2

はい、webBrowserコントロールの使用は、IE9ではなくIE8で正常に機能します。HTMLDocumentをDesignMode="On"からDesignMode="Off"に設定すると、WebBrowserからドキュメントが削除されるようです。私は自分の問題を示すこの例を作成しました。フォームには2つのボタンと1つのwebBrowserがあります。1つのボタンはwebBrowser.DocumentTextを実行し、もう1つのボタンはdocument.DesignMode="On"と"Off"を切り替えます。DesignModeボタンは「CheckOnClick」を使用します。あなたがそれが何をするのかを見ることができることを願っています。

これをIE8を搭載したマシンで実行すると、次に、DesignModeを切り替えても、webBrowser.Documentはそのまま残ります。これをIE9を搭載したマシンで実行すると、次に、DesignModeを「On」または「Off」に設定すると、webBrowserドキュメントが「」に変更されます。webBrowserがDesignMode = "On"にあり、DocumentTextを設定した場合、webBrowserはDesignMode="Off"になります。

IE9でwebBrowser.DocumentTextとDesignModeを同時に使用できるようにするために、この動作を回避する方法を見つけることができませんでした。IE8の動作は私にとっては機能しますが、IE9は機能しません。DocumentTextを設定して編集する方法を想像することはできません。

IE8の動作を元に戻すための設定または回避策はありますか?IE9の同じドキュメントでDocumentTextとDesignModeを使用することは不可能のようです。

助けてくれてありがとう。私は答えを見つけるために自分自身を検索するのに多くの時間を費やしました、そして今のところできませんでした。

    public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        webBrowser1.DocumentText = "<HTML><BODY>Initial text</BODY></HTML>";
    }

    private void designModeToolStripButton_Click(object sender, EventArgs e)
    {
        if (this.designModeToolStripButton.Checked)
            webBrowser1.Document.DomDocument.GetType().GetProperty("designMode").SetValue(webBrowser1.Document.DomDocument, "On", null);
        else
            webBrowser1.Document.DomDocument.GetType().GetProperty("designMode").SetValue(webBrowser1.Document.DomDocument, "Off", null);
    }

    private void setTextToolStripButton_Click(object sender, EventArgs e)
    {
        webBrowser1.DocumentText = "<HTML><BODY>New text</BODY></HTML>";
    }
}

また、WebBrowserDocumentCompletedイベントでDesignModeの設定を試みましたが、同じ問題が(自動的に)発生します。

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        if (this.designModeToolStripButton.Checked)
            webBrowser1.Document.DomDocument.GetType().GetProperty("designMode").SetValue(webBrowser1.Document.DomDocument, "On", null);
        else
            webBrowser1.Document.DomDocument.GetType().GetProperty("designMode").SetValue(webBrowser1.Document.DomDocument, "Off", null);
    }
4

2 に答える 2

3

問題は、DocumentText を設定すると designMode が「Inherit」にリセットされ、designMode を「On」に設定すると DocumentText がクリアされることです。これは IE 9 でのみ発生するようです。

この修正は私のために働いた:

webBrowser1.Document.Body.SetAttribute("contentEditable", "true");
于 2011-12-23T18:41:49.907 に答える
2

Eibrahim に感謝します。私の vb.net プロジェクトでも同様に機能するようです。みたいに使った

このコードを DocumentCompleted イベントに配置したところ、Win7 + IE8 および Win7 + IE9 でうまく機能しました

    Try
        If WebBrowser1.Document IsNot Nothing AndAlso WebBrowser1.Document.Body IsNot Nothing Then
            WebBrowser1.Document.Body.SetAttribute("contentEditable", "true")
        End If

    Catch ex As Exception
        DumpError(ex)
    End Try
于 2012-09-21T12:23:45.607 に答える