Если я сделаю что-то вроде этого, все будет работать нормально:
Код: Выделить всё
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;
}
}
Однако, если я сделаю что-то подобное, то в столбце «Описание» в базе данных будет введен текст точно так, как указано выше (например, @"{\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