C# 如何在WebBrowser控件中使用Delete键

C# 如何在WebBrowser控件中使用Delete键,c#,.net,winforms,webbrowser-control,C#,.net,Winforms,Webbrowser Control,我有一个.net Windows窗体项目,其中包括System.Windows.forms.WebBrowser控件,允许用户对HTML内容进行一些编辑。当该控件处于编辑模式时,可以拖放编辑诸如div或span之类的元素,但选择一个元素并键入Delete不会执行任何操作 我看到了一些关于在C++中做这项工作的帖子,但它们不是很详细。范例 下一篇文章将讨论如何使用一个名为TranslateAccelerator的函数来解决MFC项目中的类似问题 有人对如何在C#或VB中为windows窗体项目使用

我有一个.net Windows窗体项目,其中包括System.Windows.forms.WebBrowser控件,允许用户对HTML内容进行一些编辑。当该控件处于编辑模式时,可以拖放编辑诸如div或span之类的元素,但选择一个元素并键入Delete不会执行任何操作

我看到了一些关于在C++中做这项工作的帖子,但它们不是很详细。范例

下一篇文章将讨论如何使用一个名为TranslateAccelerator的函数来解决MFC项目中的类似问题

有人对如何在C#或VB中为windows窗体项目使用delete键有什么建议吗

以下是我创建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")
WebBrowser1.Navigate(“about:blank”)”初始化控件
Application.DoEvents
WebBrowser1.Document.OpenNew(False).Write(“项目标题”)

WebBrowser1.ActiveXInstance.Document.DesignMode=“On””选项Explicit必须设置为off WebBrowser1.Document.Body.SetAttribute(“contenteditable”、“true”)

谢谢

我刚刚试过这个方法:

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

可以拖动和删除元素,也可以双击编辑文本。

问题在于控件属性之一“WebBrowserShortcutsEnabled”设置为false。谢谢大家的帮助,没人能猜到,所以我得到了一个大大的“嘘!”。我确实找到了一种在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>");
}
public Form1(){
初始化组件();
webBrowser1.Navigate(“about:blank”);//初始化webbrowser控件
}
私有无效webBrowser1\u文档已完成(对象发送者,WebBrowserDocumentCompletedEventArgs e){
mshtml.IHTMLDocument2 doc=webBrowser1.Document.DomDocument作为mshtml.IHTMLDocument2;
doc.designMode=“On”;
webBrowser1.Document.OpenNew(false).编写(@“项目标题”);
}
…假设已将引用添加到MSHTML。
documentCompleted事件完成了与我的第一个代码exmaple中的Application.DoEvents相同的事情,因此这两种方式都可以。

是,但是您可以使用delete键删除选定的HTML元素吗?这并没有解决我的问题。我将用一个具体的例子更新我的帖子。“WebBrowser1.ActiveXInstance.Document.DesignMode=“On”;”不编译。为什么你不能通过javascript来实现呢?我得到的这个项目是在VB中,当option explicit关闭时,它会按照这里所述编译。无论如何,我创建了一个新的c#项目,并使用了你的代码,它肯定不在设计模式下。您是如何向文档中添加html元素的?ThxStrange代码,在发布代码片段时避免使用vb.net到C#转换器。您需要一个
使其内容可编辑。删除键在其中工作正常。请参见OK,上面的代码在VB中工作。最后一行不是必需的。有关C#示例,请参见下文。