【问题标题】:c# WYSIWYG editor using webbrowser and richtextboxc#使用webbrowser和richtextbox的所见即所得编辑器
【发布时间】:2017-07-04 02:40:50
【问题描述】:

我正在尝试按照此处和其他地方的一些示例在 c# 中进行 WYSIWYG 编辑。

我在编辑器的设计状态下使用网络浏览器,但我需要能够切换到“html-view”,所以我使用了富文本框,我的任务是从网络浏览器中获取内容并设置它到 rtb,反之亦然。

它工作正常,直到我尝试将 rtb 中的值放回网络浏览器,然后我得到一个 “此文档已更改,您要保存更改吗?”-警报,然后网络浏览器将不接受新内容。

知道该怎么做吗?或者任何其他方式来处理我之后的解决方案?

代码:

namespace EmailAdmin
{
    public partial class Form1 : Form
    {

    // global variables
    private IHTMLDocument2 doc;
    private int WYSIWYGviewState = 0;

    public Form1()
    {
        InitializeComponent();

    }

    private void Form1_Load(object sender, EventArgs e)
    {
        // initiate web browser to design mode
        webBrowserWYSIWYG.DocumentText = "<html><body></body></html>";
        doc = webBrowserWYSIWYG.Document.DomDocument as IHTMLDocument2;
        doc.designMode = "On";            
    }

    private void linkSwitchWYSIWYGview_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
    {
        // determins viewstate
        // is design view
        if (WYSIWYGviewState == 0)
        {
            // set html view
            WYSIWYGviewState = 1;
            rtbWYSIWYG.Visible = true;

            // populates the texteditor with html
            rtbWYSIWYG.Text = webBrowserWYSIWYG.DocumentText;

            // change label text
            linkSwitchWYSIWYGview.Text = "View Design";


        }
        // is html view
        else if (WYSIWYGviewState == 1)
        {
            // set design view
            WYSIWYGviewState = 0;
            rtbWYSIWYG.Visible = false;

            // populates the designer with html
            webBrowserWYSIWYG.DocumentText = rtbWYSIWYG.Text;

            // change label text
            linkSwitchWYSIWYGview.Text = "View HTML";
        }
    }
}
}

【问题讨论】:

    标签: c# browser richtextbox wysiwyg


    【解决方案1】:

    最近我花了太多时间研究 WebBrowser 控件和相关事物的工作原理,这对您来说是件好事 :-)

    做你想做的,而不是

    webBrowserWYSIWYG.DocumentText = rtbWYSIWYG.Text;
    

    webBrowserWYSIWYG.Document.Write(rtbWYSIWYG.Text);
    

    我希望这会有所帮助。它对我有用。

    编辑:试试这个:

    webBrowserWYSIWYG.Document.OpenNew(true);
    webBrowserWYSIWYG.Document.Write(rtbWYSIWYG.Text);
    

    【讨论】:

    • @David Johnstone:谢谢,它成功了! .Document.Write(); 仍然存在问题;只添加,而不是替换,所以如果你从写“!”开始并在视图之间来回切换,文档将增长 1 个“!”每个开关。有什么想法吗?
    • 我解决了,正要写:webBrowserWYSIWYG.Document.OpenNew(true);当我看到你更新了回复时,再次感谢大卫
    猜你喜欢
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多