首页 文章

RichTextBox.RTF不接受从数据库生成的字符串 - C#

提问于
浏览
1

我这里有一个奇怪的问题 . 我正在尝试创建一个表单,当从ListBox中进行选择时,将从数据库中轮询数据并将其显示在RichTextBox中 . 我需要将数据放在RTF中以进行格式化 .

如果我做这样的事情,它工作正常:

private void SaveListTest_SelectedIndexChanged(object sender, EventArgs e)
    {
        DescriptionName = Convert.ToString(SaveListTest.SelectedItem);
        //CallDescriptionTest();
        CallDescriptionTest2();
        SaveRichTest.Rtf = DescriptionText;
    }

    public void CallDescriptionTest2()
    {
        switch (DescriptionName)
        {
            case "Test":
                DescriptionText = @"{\rtf1\ansi\ Test}";
                break;
            case "Words":
                DescriptionText = @"{\rtf1\ansi\ A really long phrase}";
                break;
        }
    }

在这种情况下,RichTextBox(SaveRichTest)将获取数据并显示它 .

但是,如果我执行类似这样的操作,则数据库中的Description列具有与上面完全相同的输入文件(ex - @“{\ rtf1 \ ansi \ Test}”):

private void SaveListTest_SelectedIndexChanged(object sender, EventArgs e)
    {
        DescriptionName = Convert.ToString(SaveListTest.SelectedItem);
        CallDescriptionTest();
        //CallDescriptionTest2();
        SaveRichTest.Rtf = DescriptionText;
    }

    public void CallDescriptionTest()
    {
        using (SqlConnection con = new SqlConnection(BuildDB))
        {
            con.Open();
            string sql = String.Format("Select * from Abilities where Name = '{0}'", DescriptionName);
            SqlCommand oCmd = new SqlCommand(sql, con);

            using (SqlDataReader oReader = oCmd.ExecuteReader())
            {
                while (oReader.Read())
                {
                    DescriptionText = Convert.ToString(oReader["Description"]);
                }
                con.Close();
            }
        }
    }

这将导致程序崩溃,并出现“文件格式无效”错误 .

我知道文本正确地从数据库中提取,因为如果我将“SaveRichTest.Rtf”更改为“SaveRichTest.Text”,它会正确显示它(尽管显示的是RTF格式代码) .

我只是无法弄清楚为什么在第二种情况下它不能正确接受字符串 . 这对我来说毫无意义 . 有人可以帮忙吗?

1 回答

  • 0

    我想在你尝试以纯文本显示输出的情况下,你的输出是: @"{\rtf1\ansi\ Test}

    这意味着当您想要显示直接从数据库格式化的此字符串时,您将传递它 "@"{\rtf1\ansi\ Test}"" 而不是正确的格式 . 我建议您在数据库中存储没有@的格式,只显示结果 .

相关问题