0

ユーザーが HTML コンテンツを編集できるようにする System.Windows.forms.WebBrowser コントロールを含む .net Windows フォーム プロジェクトがあります。このコントロールが編集モードの場合、div や span などの要素はドラッグ アンド ドロップで編集できますが、要素を選択して Delete と入力しても何も起こりません。

C++ でこの作業を行うことについて話している投稿をいくつか見ましたが、それらはあまり詳細ではありません。例http://social.msdn.microsoft.com/Forums/en-US/ieextensiondevelopment/thread/1f485dc6-e8b2-4da7-983f-ca431f96021f/

この次の投稿では、TranslateAccelerator メソッドと呼ばれる関数を使用して、MFC プロジェクトで同様の問題を解決する方法について説明します。http://vbyte.com/iReader/Reader.asp?ISBN=0735607818&URI=/HTML/chaab.htm

WindowsフォームプロジェクトのC#またはVBで削除キーを機能させる方法について誰か提案がありますか?

WebBrowser コンテンツを作成するコードは次のとおりです。

WebBrowser1.Navigate("about:blank")   ' Initializes the control
Application.DoEvents
WebBrowser1.Document.OpenNew(False).Write("<html><body><span>Project Title</span><input type='text' value='' /></body></html>")
WebBrowser1.ActiveXInstance.Document.DesignMode = "On"  ' Option Explicit must be set to off
WebBrowser1.Document.Body.SetAttribute("contenteditable", "true")

ありがとう

4

2 に答える 2

2

問題は、コントロール プロパティの 1 つである "WebBrowserShortcutsEnabled" が false に設定されていたことです。助けてくれてありがとう、誰もそれを推測できなかったので、私は大きな「DUH!」を得ました。コードが次のようになるc#でこれを機能させる方法を見つけました:

public Form1() {
    InitializeComponent();
    webBrowser1.Navigate("about:blank");  // Initializes the webbrowser control
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
    mshtml.IHTMLDocument2 doc = webBrowser1.Document.DomDocument as mshtml.IHTMLDocument2;
    doc.designMode = "On";
    webBrowser1.Document.OpenNew(false).Write(@"<html><body><span>Project Title</span><input type=""text"" value="""" /></body></html>");
}

...参照が MSHTML に追加されたと仮定します。documentCompleted イベントは、最初のコード例の Application.DoEvents と同じことを実行するため、どちらの方法でも実行できます。

于 2012-07-27T21:29:50.377 に答える
0

私はちょうどこの方法を試しました:

webBrowser1.Navigate(@"javascript:document.body.contentEditable='true'; document.designMode='on'; void 0");

要素はドラッグして削除でき、ダブルクリックでテキストを編集することもできます。

于 2012-07-26T16:12:08.757 に答える