Previous topicNext topic
Help > 开发指南 > 窗体开发 > 控件参考 > 控件参考 > 富文本编辑 >
C1Editor(C1富文本编辑器)

C1Editor(C1富文本编辑器)

如果我们想了解更详细的教程的话,可以访问学习官方教程

以下是 C1 编辑器的一些主要功能:

1.“动态”与 Xml 文档同步
将 C1 编辑器控件绑定到文档属性中指定的文档。如果在 C1 编辑器中编辑文档,则基础 Xml 文档将同步以匹配它。如果代码中的 Xml 文档发生更改,则在运行时这些更改在 C1 编辑器控件中可见。有关更多信息,请参见将 C1 编辑器绑定到文档。

2.C1编辑器提供三种编辑模式:设计、源和预览
C1 编辑器控件具有三种编辑器模式:“设计”、“源”和“预览”。您可以通过设置 Mode 属性来确定用户最初将看到哪些视图。

3.从文件或流加载和保存 Xhtml 文档或保存到文件或流
您可以将 XHTML 文档从文件、流或 XML 字符串加载到 C1 编辑器中。您可以将 XHTML 文档保存到文件或流中。有关如何执行此操作的示例,请参阅 WinForms 编辑器的基于任务的帮助。

4.WinForms 编辑器提供级联样式表支持,包括用于设计和预览模式的易于定义的自定义 CSS 样式
C1编辑器完全支持在编辑的文档中级联样式表(CSS)。此外,您可以在 CSS 文件中指定外部 CSS 规则,这些规则将仅在“设计”或“预览”模式下使用。“加载设计器”和“加载预览”CSSS 方法通过从文件或流加载级联样式表来支持此功能。

5.代码清理例程
在加载文档、关闭源代码模式或执行验证源或 FixSource 方法时,C1Editor 会自动删除空标记、关闭未关闭的标记,并且通常会改进混乱或不可读的 HTML 或 XHTML 代码,将其转换为有效的 XHTML。

6.WinForms内置拼写检查器的编辑器允许您在键入时进行检查
拼写检查功能由组件一的 C1S 拼写检查器组件提供。

C1Editor 完全支持 C1SpellChecker,因此您可以使用其所有强大的功能,包括:模式对话框模式(用户可以选择通过对话框更正或忽略错误)、键入时模式(拼写错误由红色波浪形下划线指示)和自动替换功能(拼写错误会在您键入时自动更正)。在键入时模式中,内置的 C1 编辑器上下文菜单与 C1SpellChecker 上下文菜单合并,以便您可以查看和选择所有可用的命令。

7.能够在 DTD 中添加自定义标记
高级编程任务有时需要在编辑的文档中使用其他 DTD 元素。可以在文档中输入元素或标记,并使用 Xml 扩展属性以特殊 XML 格式指定它们。有关此功能的完整示例,请参阅随此产品一起安装的自定义标记示例。

8.访问和管理来自代码选择和插入符号位置的数据
您可以通过指定要选择的字符范围来访问 C1 编辑器中的内容。有关示例,请参见在 C1 编辑器中选择字符。

9.文本修饰和块格式命令
您可以轻松地在文本块中设置字体和文本修饰以及块格式设置属性,而不必担心如何修改基础 XmlDocument。使用 C1TextRange 类标识目标文本,使用 C1TextRange 方法应用修饰或格式设置:“应用标记”、“应用类”、“应用样式”和“应用格式”。

10.使用内置或自定义对话框插入链接、图片、表格和其他对象
您可以显示内置或自定义对话框,以在当前选择处插入或编辑各种对象。这些对话框允许您指定插入或编辑对象的所有属性。例如,“图片”对话框包含用于选择图像源或文件名、替换文本、大小等的字段。C1Editor 还具有一个内置的“查找和替换”对话框,允许用户指定要搜索的字符串和替换字符串,以及在文档中搜索文本时要使用的选项。如果您愿意,可以创建和使用自己的“查找和替换”对话框,并在 C1 编辑器的“自定义诊断”属性中指定该对话框。

11.使用鼠标移动图片或表格或调整其大小
您可以通过使用鼠标指定对象的大小或位置,在“设计”模式下直接与对象进行交互。

移动是一种直接操作。您可以在文档中沿任意方向移动对象。C1编辑器将相对于 XmlNode 移动和/或自动设置对象的新位置属性。

调整大小允许您沿鼠标指针移动的方向调整所选对象的大小。C1编辑器将自动设置对象的新大小属性。

 12.打印支持
调用“打印”方法与从 Windows Internet 资源管理器的“文件”菜单中选择“打印”具有相同的效果。Print 方法可以激活“打印”对话框,提示用户更改打印设置。

使用“打印预览”方法,可以在打印网页之前查看网页,从而避免打印错误。

有关此功能的完整示例,请参阅随此产品一起安装的打印模板示例。

13.剪贴板支持
您可以选择文本、表格或图形,并使用 C1 编辑器的“剪切”或“复制”方法将所选内容移动到剪贴板。然后,您可以将所选内容粘贴到另一个程序中。您可以从程序甚至IE浏览器中的图片复制HTML,然后使用粘贴方法将其放入C1编辑器中。方法会自动将粘贴到 C1 编辑器中的文本格式化为纯文本。C1编辑器还支持键盘快捷键,如 CTRL+C(复制)、CTRL+X(剪切)和 CTRL+V(粘贴)。若要确定允许哪些剪贴板操作,请使用“截取”、“可以复制”、“可以粘贴”和“可以粘贴文本”属性。

14.更改历史记录(撤消/重做)
C1编辑器具有无限的撤消历史记录机制。可以通过编程方式访问编辑历史记录,调用 Undo 或 Redo 方法。“撤消”和“重做”方法还支持键盘快捷键:CTRL+Z(撤消)和 CTRL+Y(重做)。通过重复撤消,用户可以逐渐回到错误发生之前的状态。

示例

下面我们就以一个简单的示例,演示一下如何在我们的项目中运行此控件。

第一步,我们先拖放一个SplitContainer控件,方向改成Horizontal水平排布,然后在Panel1里面放入一个FlowLayoutPanel控件,然后在里面分别放入C1EditorToolStripMain、C1EditorToolStripObjects、C1EditorToolStripReview、C1EditorToolStripStyle、C1EditorToolStripTable菜单。

第二步,在Panel2里面放入C1Editor控件,设置停靠为Fill。

第三步,设置C1EditorToolStripMain、C1EditorToolStripObjects、C1EditorToolStripReview、C1EditorToolStripStyle、C1EditorToolStripTable菜单的Editor属性为C1Editor控件。

经过上面的步骤下来,一个富文本编辑功能其实已经做好了。

我们可以在窗体中加一些代码作一些控制

Vb.Net
Namespace FormEvents
    Public Class Form32a700e6ecc84596b99eae0f6e8e21bf
        Inherits FormEventsBase
        
        Public Sub C1EditorHelp_Load(sender As Object,e As  System.EventArgs)
            Dim C1EditorToolStripMain2 As C1.Win.C1Editor.ToolStrips.C1EditorToolStripMain=Me.SmForm.ControlDictionary()("C1EditorToolStripMain2")
            '我们可以隐藏部分菜单,不让用户看到
            C1EditorToolStripMain2.Items("New").Visible = False
            C1EditorToolStripMain2.Items("Open").Visible = False
            C1EditorToolStripMain2.Items("Save").Visible = False
            
            '如果是普通用户,则要禁用设计与源码模式
            Dim C1Editor1 As C1.Win.C1Editor.C1Editor=Me.SmForm.ControlDictionary()("C1Editor1")
            If Proj.User.Roles.Contains(Proj.DeveloperRoleID) Then
                '只有满足部分条件的才进入编辑模式
                C1Editor1.Mode = C1.Win.C1Editor.EditorMode.Design
            Else
                '不满足条件的就直接预览模式
                C1Editor1.Mode = C1.Win.C1Editor.EditorMode.Preview
                '隐藏其他两种模式的菜单,不让切换
                C1EditorToolStripMain2.Items("Design").Visible = False
                C1EditorToolStripMain2.Items("Source").Visible = False
            End If
            
            '加载xml文件
            Dim strFilePath As String="D:\Test.html"
            If File.Exists(strFilePath) Then
                editorHelp.LoadXml(strFilePath)
            End If
        End Sub
        
        Public Sub C1EditorHelp_FormClosing(sender As Object,e As  System.Windows.Forms.FormClosingEventArgs)
            Dim C1Editor1 As C1.Win.C1Editor.C1Editor=Me.SmForm.ControlDictionary()("C1Editor1")
            '保存xml文件
            Dim strFilePath As String="D:\Test.html"
            C1Editor1.SaveXml(strFilePath)
            
            '也可以将文件保存到rtf格式
            Dim strFilePathRtf As String="D:\Test.rtf"
            C1Editor1.SaveRtf(strFilePathRtf)
        End Sub
        
    End Class
End Namespace

C#
namespace FormEvents
{
    public class Form32a700e6ecc84596b99eae0f6e8e21bf : FormEventsBase
    {
        public void C1EditorHelp_Load(object sender, System.EventArgs e)
        {
            C1.Win.C1Editor.ToolStrips.C1EditorToolStripMain C1EditorToolStripMain2 = this.SmForm.ControlDictionary()["C1EditorToolStripMain2"] as C1.Win.C1Editor.ToolStrips.C1EditorToolStripMain;
            // 我们可以隐藏部分菜单,不让用户看到
            C1EditorToolStripMain2.Items["New"].Visible = false;
            C1EditorToolStripMain2.Items["Open"].Visible = false;
            C1EditorToolStripMain2.Items["Save"].Visible = false;

            // 如果是普通用户,则要禁用设计与源码模式
            C1.Win.C1Editor.C1Editor C1Editor1 = this.SmForm.ControlDictionary()["C1Editor1"] as C1.Win.C1Editor.C1Editor;
            if (Proj.User.Roles.Contains(Proj.DeveloperRoleID))
                // 只有满足部分条件的才进入编辑模式
                C1Editor1.Mode = C1.Win.C1Editor.EditorMode.Design;
            else
            {
                // 不满足条件的就直接预览模式
                C1Editor1.Mode = C1.Win.C1Editor.EditorMode.Preview;
                // 隐藏其他两种模式的菜单,不让切换
                C1EditorToolStripMain2.Items["Design"].Visible = false;
                C1EditorToolStripMain2.Items["Source"].Visible = false;
            }

            // 加载xml文件
            string strFilePath = @"D:\Test.html";
            if (File.Exists(strFilePath))
                editorHelp.LoadXml(strFilePath);
        }

        public void C1EditorHelp_FormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e)
        {
            C1.Win.C1Editor.C1Editor C1Editor1 = this.SmForm.ControlDictionary()["C1Editor1"] as C1.Win.C1Editor.C1Editor;
            // 保存xml文件
            string strFilePath = @"D:\Test.html";
            C1Editor1.SaveXml(strFilePath);

            // 也可以将文件保存到rtf格式
            string strFilePathRtf = @"D:\Test.rtf";
            C1Editor1.SaveRtf(strFilePathRtf);
        }
    }
}