javascript - 在 C#.net Winform 应用程序中获取和设置 CKEditor HTML

标签 javascript c# html winforms ckeditor

我正在尝试在 Winform 应用程序中使用 CKEditor 在 Sql Server 数据库中加载、操作和存储 HTML 内容。

我发现了这篇关于如何将 CKEditor 引入 winform 的精彩文章:

Can the CKEditor be used in a WinForms application for (X)HTML editing?

但是,它没有详细说明如何加载 HTML 内容或在用户操作后提取它。

我已经尝试过:

webBrowser1.Document.GetElementById("editor1").InnerText;

但是,它返回加载到编辑器中的初始数据,在用户操作后,它仍然返回相同的值。

如果有人可以使用一些代码来扩展上面链接中的答案,这些代码会加载一些内容的编辑器,以及一些在 WinForm 应用程序中显示消息框及其当前内容的代码,我将非常感激。我怀疑它需要在最初打开的 html 文件中添加更多 JavaScript,但我对 JavaScript 一无所知,而且我花了几天时间试图尝试它,但没有成功。

提前致谢。

最佳答案

在今天的一些更多研究中,我能够回答我自己的问题...... 我加载到网络浏览器控件的空白 HTML 设置文件如下所示:

<html>
    <head>
        <script src="http://cdn.ckeditor.com/4.4.7/full/ckeditor.js"></script>
    </head>
    <script>
        var editor1, html = '';

        function createEditor() {
            if ( editor1 )
                return;

            // Create a new editor instance inside the <div id="editor1"> element,
            // setting its value to html.
            var config = {};
            editor1 = CKEDITOR.appendTo( 'editor1', config, html );
        }

        function getHtml() {
            if ( !editor1 )
                return;
            html = editor1.getData();
            return html

        }

        function setHtml(vsHtml) {
            if ( !editor1 )
                return;
            editor1.setData(vsHtml)
        }
    </script>
    <div id="editor1"></div>
</html>

C# 代码如下所示:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace HTMLEditor
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load_1(object sender, EventArgs e)
        {
            webBrowser1.Navigate("C:\\AMResearch\\HTMLEditor\\blank.html");
            Application.DoEvents();
        }

        private void button1_Click_1(object sender, EventArgs e)
        {
            webBrowser1.Document.InvokeScript("createEditor");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string sHtml;
            sHtml = (string)webBrowser1.Document.InvokeScript("getHtml");
            MessageBox.Show(sHtml);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            Object[] objArray = new Object[1];
            objArray[0] = "<p>Hellow World!</p>";
            webBrowser1.Document.InvokeScript("setHtml", objArray);
        }

    }
}

关于javascript - 在 C#.net Winform 应用程序中获取和设置 CKEditor HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31119631/

相关文章:

javascript - 如何更新/刷新 html 中的滚动文本(当它们滚动时)

javascript - 我们将如何衡量调用 e.stopPropagation() 是否更高效?

javascript - 锁定鼠标滚轮滚动到焦点 div

c# - 获取 Facebook TOKEN 的客户端凭据

c# - 在 C# 中可以进行元编程吗?

html - 如果 DOM 中存在另一个 div,如何选择一个 div

javascript - 未创建 React.js 组件

c# - 减少 C# 上 MySQL 的超时异常

jquery - 自动扩展输入框,不干扰其他 block

python - 如何在提交时验证 Flask 表单?