我有一个.net Windows窗体项目,其中包含System.Windows.forms.WebBrowser控件,允许用户对HTML内容进行一些编辑。当此控件处于编辑模式时,可以对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")
由于
答案 0 :(得分:2)
问题是其中一个控件属性“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事件在我的第一个代码exmaple中完成与Application.DoEvents相同的事情,因此可以采用任何一种方式。
答案 1 :(得分:0)
我刚试过这个方法:
webBrowser1.Navigate(@"javascript:document.body.contentEditable='true'; document.designMode='on'; void 0");
可以拖动和删除元素,也可以双击编辑文本。