RichTextBox.RTF не принимает строку, сгенерированную из базы данных – C#C#

Место общения программистов C#
Anonymous
RichTextBox.RTF не принимает строку, сгенерированную из базы данных – C#

Сообщение Anonymous »

У меня есть немного странная проблема. Я пытаюсь создать форму, которая при выборе из 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) возьмет данные и отобразит их без проблем.

Однако, если я сделаю что-то подобное, то в столбце «Описание» в базе данных будет введен текст точно так, как указано выше (например, @"{\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).

Я просто не могу понять, почему во втором случае строка не принимается должным образом. Для меня это не имеет никакого смысла. Может кто-нибудь помочь?

Подробнее здесь: https://stackoverflow.com/questions/348 ... se-c-sharp

Вернуться в «C#»