【问题标题】:How do I make the Delete key work in the WebBrowser control如何使 Delete 键在 WebBrowser 控件中起作用
【发布时间】:2012-07-26 14:42:53
【问题描述】:

我有一个 .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

有没有人建议如何在 C# 或 VB 中为 windows 窗体项目使用删除键?

这是我创建 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")

谢谢

【问题讨论】:

  • 奇怪的代码,发布 sn-ps 时避免使用 vb.net 到 C# 转换器。您需要&lt;textarea&gt; 才能使其内容可编辑。删除键在其中工作正常。见stackoverflow.com/questions/2866463/list-replies-in-a-winform
  • 好的,上面的代码在VB中工作。最后一行不是必需的。有关 C# 示例,请参见下文。

标签: c# .net winforms webbrowser-control


【解决方案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 完成相同的事情,因此可以采用任何一种方式。

【讨论】:

    【解决方案2】:

    我刚试过这个方法:

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

    元素可以拖拽删除,也可以双击编辑文字。

    【讨论】:

    • 可以,但是您可以使用删除键删除选定的 HTML 元素吗?
    • 这并没有解决我的问题。我会用一个具体的例子来更新我的帖子。
    • "WebBrowser1.ActiveXInstance.Document.DesignMode = "开";"不编译。为什么不能通过 javascript 来实现?
    • This project I was given is in VB and when option explicit is off this compiles as described here social.msdn.microsoft.com/Forums/eu/winforms/thread/… In any case i created a new c# project and used your code and it definately is NOT in design模式。您是如何将 html 元素添加到文档中的?谢谢
    猜你喜欢
    • 2015-01-24
    • 2012-07-04
    • 2015-03-16
    • 2011-02-14
    • 2022-01-07
    • 1970-01-01
    • 2016-03-13
    • 2018-03-05
    • 1970-01-01
    相关资源
    最近更新 更多