我是wpf的新手,我想将富文本框的数据及其格式(斜体、彩色、粗体…)存储到数据库(mysql)中。
当前保存数据时,格式将被忽略。
此外,当我从数据库将所有文本加载回富文本框时,它将在同一行中显示所有文本。
期待您的帮助和建议!

public void save()
    {

        MySqlConnection conn = new MySqlConnection(connString);
        MySqlCommand command = conn.CreateCommand();
        string richText = new TextRange(rt1.Document.ContentStart,  rt1.Document.ContentEnd).Text;

        string s = WebUtility.HtmlEncode(richText);
        command.Parameters.AddWithValue("@s", s);
        command.CommandText = "insert into proc_tra (procedures) values (@s)";
        conn.Open();
        command.ExecuteNonQuery();
        conn.Close();
    }

public void load()

    {   MySqlConnection conn = new MySqlConnection(connString);
        MySqlCommand command = conn.CreateCommand();
        command.CommandText = "select * from proc_tra where id_pt=4";
        rt1.Document.Blocks.Clear();
        conn.Open();
        MySqlDataReader dr;
        dr = command.ExecuteReader();
        string k="";
        while (dr.Read())
        {
            k += dr["procedures"].ToString();
        }
        var p = new Paragraph();
        var run = new Run();
        run.Text = WebUtility.HtmlDecode(k);
        p.Inlines.Add(run);
        rt1.Document.Blocks.Add(p);
    }

最佳答案

要获取将保存在数据库中的格式化文本:

string rtfText; //string to save to db
TextRange tr = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);
using (MemoryStream ms = new MemoryStream())
{
    tr.Save(ms, DataFormats.Rtf);
    rtfText = Encoding.ASCII.GetString(ms.ToArray());
}

要还原从数据库检索到的格式化文本,请执行以下操作:
string rtfText= ... //string from db
byte[] byteArray = Encoding.ASCII.GetBytes(rtfText);
using (MemoryStream ms = new MemoryStream(byteArray))
{
    TextRange tr = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);
    tr.Load(ms, DataFormats.Rtf);
}

也可以使用xaml格式,在加载保存时使用dataformats.xaml。

关于c# - 使用格式将富文本框的数据存储到数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32057398/

10-11 19:25
查看更多