【发布时间】:2010-09-17 20:47:20
【问题描述】:
任何人都知道适用于 .NET 的免费 winforms html 编辑器。理想情况下,我想要 html 和预览模式以及导出为 pdf、word doc 或类似文件的可能性。
虽然我可以从 html 输出中创建自己的导出。
另一个不错的功能是从 word 中粘贴,它可以删除您通常最终使用的所有额外标签,但再次强调它是一个不错的选择。
【问题讨论】:
任何人都知道适用于 .NET 的免费 winforms html 编辑器。理想情况下,我想要 html 和预览模式以及导出为 pdf、word doc 或类似文件的可能性。
虽然我可以从 html 输出中创建自己的导出。
另一个不错的功能是从 word 中粘贴,它可以删除您通常最终使用的所有额外标签,但再次强调它是一个不错的选择。
【问题讨论】:
如果你只需要简单地格式化一些文本,你可以在codeproject.com找到很多开源项目。
我认为 Netrix 的功能是所有这些免费控件中最全面的。链接如下: https://github.com/joergkrause/netrix
当然也有一些付费的商业控件,通常会提供更友好的界面和更丰富的功能,比如这个BaiqiSoft.HtmlEditor。 它允许我合并/取消合并单元格,调整插入表格的行高和列宽。
【讨论】:
您可以在设计模式下使用WebBrowser 控件,而在视图模式下设置第二个WebBrowser 控件。
为了将WebBrowser控件置于设计模式,您可以使用以下代码。
此代码是我们的一款软件产品的 WYSIWYG 编辑器的超级精简版。
只需创建一个新表单,在其上放置一个WebBrowser 控件,然后将其放入 Form.Load:
Me.WebBrowser1.Navigate("")
Application.DoEvents()
Me.WebBrowser1.Document.OpenNew(False).Write("<html><body><div id=""editable"">Edit this text</div></body></html>")
'turns off document body editing
For Each el As HtmlElement In Me.WebBrowser1.Document.All
el.SetAttribute("unselectable", "on")
el.SetAttribute("contenteditable", "false")
Next
'turns on editable div editing
With Me.WebBrowser1.Document.Body.All("editable")
.SetAttribute("width", Me.Width & "px")
.SetAttribute("height", "100%")
.SetAttribute("contenteditable", "true")
End With
'turns on edit mode
Me.WebBrowser1.ActiveXInstance.Document.DesignMode = "On"
'stops right click->Browse View
Me.WebBrowser1.IsWebBrowserContextMenuEnabled = False
【讨论】:
SpiceLogic .NET WinForms HTML 编辑器控件,不是免费的,但它涵盖了您正在寻找的一切。尤其是 从 MS word 中粘贴 功能非常有效。单击 MS Word 粘贴按钮会将内容从剪贴板粘贴到编辑器,并清理 ms word 特定标签并生成干净的 XHTML。如果 MS Word 包含一些图像,此编辑器也会检测这些图像,并且输出 XHTML 将包含图像标记以及这些图像的正确路径。
https://www.spicelogic.com/Products/NET-WinForms-HTML-Editor-Control-8
【讨论】:
//CODE in C#
webBrowser1.Navigate("about:blank");
Application.DoEvents();
webBrowser1.Document.OpenNew(false).Write("<html><body><div id=\"editable\">Edit this text</div></body></html>");
foreach (HtmlElement el in webBrowser1.Document.All)
{
el.SetAttribute("unselectable", "on");
el.SetAttribute("contenteditable", "false");
}
webBrowser1.Document.Body.SetAttribute("width", this.Width.ToString() + "px");
webBrowser1.Document.Body.SetAttribute("height", "100%");
webBrowser1.Document.Body.SetAttribute("contenteditable", "true");
webBrowser1.Document.DomDocument.GetType().GetProperty("designMode").SetValue(webBrowser1.Document.DomDocument, "On", null);
webBrowser1.IsWebBrowserContextMenuEnabled = false;
【讨论】:
请参阅http://www.maconstateit.net/tutorials/JSDHTML/JSDHTML12/jsdhtml12-02.htm 以获取使用 IE 中的编辑支持的示例 HTML 编辑器。
http://www.mozilla.org/editor/midasdemo/ 和 http://starkravingfinkle.org/blog/wp-content/uploads/2007/07/contenteditable.htm 也可以在 IE 中使用,并提供了如何制作工具栏的示例,用于字体、粗体、斜体等
当我尝试这样做时,请参阅这些问题以了解我的经验。
我还有很多其他问题,包括必须在 jscript 中编写调整大小逻辑以使 HTML 编辑器与 WinForm 表单一起调整大小,并且必须将默认表单/控制颜色传递给 HTML 编辑器以便它看起来写然后用户在 Windows 上更改了配色方案。
因此,如果我需要再次执行此操作,我会使用第 3 方 HTML 编辑器(免费或付费)
【讨论】:
我正在考虑使用 Lutz Roeder 的 Writer(以 Reflector 闻名)。一个完全用 C# 编写的基本 Html 编辑器,按原样提供源代码。在http://www.lutzroeder.com/dotnet/寻找它
【讨论】: