PDA

View Full Version : سوال: نمایش و ذخیره جزئیات جدول (رنگ سلولها و...) در RichTextbox



farbod61
دوشنبه 19 اسفند 1392, 10:01 صبح
سلام اساتید گرامی
یک سوال داشتم
میخواستم بدونم چیکار میتونم بکنم که ریچ تکست باکس خاصیت جدول و رنگ و غیره رو نشون بده؟
جدول از ورد کپی میکنم و رنگ فونت کپی میشه و نشون میده ولی بعد از ذخیره کردن ، موقع لود کردن دیگه فقط حروف رو به همون رنگ سیاه نشون میده و جدول نمیاد
پیشاپیش ممنونم از کمکتون

rahnema1
دوشنبه 19 اسفند 1392, 11:34 صبح
سلام، ببینید این میتونه کمکی کنه؟

richTextBox1.SaveFile("c:\\myfile.rtf",RichTextBoxStreamType.RichText);

rahnema1
دوشنبه 19 اسفند 1392, 11:35 صبح
richTextBox1.SaveFile( "c:\\myfile.rtf", RichTextBoxStreamType.RichText );

farbod61
دوشنبه 19 اسفند 1392, 12:02 عصر
سلام
ممنونم از پاسخگوییتون
ولی من میخوام اطلاعات داخل دیتابیس ذخیره بشه و بعدش هم از دیتابیس لود بشه

rahnema1
دوشنبه 19 اسفند 1392, 13:20 عصر
شما می تونید با memory stream کار کنید یعنی اول تکستها را به بایت تبدیل می کنید و بعد داده خام را در دیتابیس ذخیره می کنید مثلا نوع داده اون فیلد از نوع blob باشه که آرایه بایت را داخل اون بریزید یا از اون بخونید
1. شما باید texttodataBase را داخل دیتابیس ذخیره کنید

System.IO.Stream st = new System.IO.MemoryStream();
richTextBox1.SaveFile(st,RichTextBoxStreamType.Ric hText);
byte[] texttodataBase= new byte[st.Length];
st.Seek(0,System.IO.SeekOrigin.Begin);
st.Read(datatodataBase,0,(int)st.Length);
// save data to database....


2. برای خواندن از دیتابیس ابتدا مقادیر بایت را از دیتابیس وارد آرایه textfromdataBase می کنید

byte[] textfromdataBase;
//read from database to textfromdataBase
System.IO.Stream st1 = new System.IO.MemoryStream();
st1.Write(textfromdataBase,0,textfromdataBase.Leng th);
richTextBox1.LoadFile(st1,RichTextBoxStreamType.Ri chText);

rahnema1
دوشنبه 19 اسفند 1392, 13:25 عصر
System.IO.Stream st = new System.IO.MemoryStream();
richTextBox1.SaveFile(st, RichTextBoxStreamType.RichText );
byte[] texttodataBase= new byte[st.Length];
st.Seek(0,System.IO.SeekOrigin.Begin );
st.Read(texttodataBase ,0 , (int)st.Length);
// save data to database....

/******************************************/

byte[] textfromdataBase;
//read from database to textfromdataBase
System.IO.Stream st1 = new System.IO.MemoryStream();
st1.Write(textfromdataBase,0 , textfromdataBase.Length);
st1.Seek(0,System.IO.SeekOrigin.Begin);
richTextBox1.LoadFile(st1, RichTextBoxStreamType.RichText);

farbod61
دوشنبه 19 اسفند 1392, 14:05 عصر
جسارتا امکانش هست یکم توضیح بدید؟ شما خوب توضیح دادیدا، من در این مورد اطلاعاتم خیلی کمه
ممنون میشم
اگه برنامه نمونه باشه که یک دنیا ممنونتون میشم
بازم تشکر از وقتی که میذارید

rahnema1
دوشنبه 19 اسفند 1392, 15:41 عصر
شما لازمه یک ستون مثلا به نام richTextColumn از نوع VarBinary در جدولتون که اسمش هست myTable درست کنید
دو تا دکمه داریم و دو تا ریچ تکست باکس که دکمه اولی از ریچ تکست باکس اولی می خونه و می ریزه توی دیتابیس مورد نظر
دکمه دوم هم رکوردبا ID شماره 1 را می خونه می ریزه توی ریچ تکست باکس دوم

private void button1_Click(object sender, EventArgs e)
{
System.IO.Stream st = new System.IO.MemoryStream();
richTextBox1.SaveFile(st, RichTextBoxStreamType.RichText );
byte[] texttodataBase= new byte[st.Length];
st.Seek(0,System.IO.SeekOrigin.Begin );
st.Read(texttodataBase ,0 , (int)st.Length);
SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=myDataBase;Integrated Security=True;");
conn.Open();
using(SqlCommand cmd = new SqlCommand("INSERT INTO myTable(richTextColumn) VALUES (@rich)", conn))
{
cmd.Parameters.Add("@rich", SqlDbType.VarBinary, texttodataBase.Length).Value = texttodataBase;
cmd.ExecuteNonQuery();
}
conn.Close();
}
private void button2_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=myDataBase;Integrated Security=True;");
SqlCommand cmd = new SqlCommand("Select richTextColumn from myTable WHERE ID=1", conn);
conn.Open();
SqlDataReader rdr = cmd.ExecuteReader();
rdr.Read();
byte[] textfromdataBase = (byte[])rdr["richTextColumn"];
conn.Close();
System.IO.Stream st1 = new System.IO.MemoryStream();
st1.Write(textfromdataBase,0 , textfromdataBase.Length);
st1.Seek(0,System.IO.SeekOrigin.Begin);
richTextBox2.LoadFile(st1, RichTextBoxStreamType.RichText);
}

من این برنامه را تست نکردم اگه لازم بود تغییر بدید
می تونید به این لینکها هم مراجعه کنید:
http://custom-designed-databases.com/wordpress/2013/creating-a-table-to-hold-binary-data-in-sql-server/
http://custom-designed-databases.com/wordpress/2013/c-console-program-to-add-data-to-a-sql-server-table/