用c#中的RichTextBox实现图文格式编排存储和格式化显示
2011-12-28 11:05
316 查看
最近做项目要求把一个数据库查询出来的文章按格式进行显示,包括字体大小和颜色等格式等,开始使用很多方法,在RichTextBox总不能显示字体大小、图片等格式信息,后来想到了RichTextBox可以把rtf格式的文档进行格式化显示,在此启发下,我把rtf数据保存问数据流,再在数据库中以blob类型保存,结果成功了,先分享给大家。
//保存函数
private void button1_Click(object sender, EventArgs e)
{
NameInfo nameInfo = new NameInfo();
nameInfo.name = this.comboBox1.Text;
System.IO.MemoryStream mstream = new System.IO.MemoryStream();
this.richTextBox1.SaveFile(mstream, RichTextBoxStreamType.RichText);
//将流转换成数组
byte[] bWrite = mstream.ToArray();
nameInfo.info = bWrite;
if (DbAccess.Create(nameInfo))
{
this.Close();
}
else
{
MessageBox.Show("创建失败");
}
}
//数据库存储函数
public static bool Create(NameInfo nameInfo)
{
try
{
using (SQLiteConnection conn = new SQLiteConnection(sConn))
{
conn.Open();
SQLiteCommand cmd = conn.CreateCommand();
cmd.CommandText = "INSERT INTO nameInfor(name,infor) VALUES(@name,@infor);";
cmd.Parameters.Add(new SQLiteParameter("name", nameInfo.name));
cmd.Parameters.Add(new SQLiteParameter("infor", nameInfo.info));
int i = cmd.ExecuteNonQuery();
return i == 1;
}
}
catch (Exception)
{
//Do any logging operation here if necessary
return false;
}
}
//查询并显示函数
private void button2_Click(object sender, EventArgs e)
{
EditForm editForm = new EditForm();
NameInfo nameInfo=DbAccess.GetByName(this.comboBox1. Text);
byte[] bWrite = (byte[])nameInfo.Info;
//将数组转换成stream
System.IO.MemoryStream mstream = new System.IO.MemoryStream(bWrite, false);
//将stream填充到RichTextBox
editForm.richTextBox1.LoadFile(mstream, RichTextBoxStreamType.RichText);
editForm.Show();
}
//查询数据库的函数
public static NameInfo GetByName(string name)
{
try
{
using (SQLiteConnection conn = new SQLiteConnection(sConn))
{
conn.Open();
SQLiteCommand cmd = conn.CreateCommand();
cmd.CommandText = "SELECT * FROM nameInfor WHERE name=@name;";
cmd.Parameters.Add(new SQLiteParameter("name", name));
SQLiteDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
NameInfo nameInfo = new NameInfo();
nameInfo.name = dr.GetString(0);
nameInfo.info = System.Text.Encoding.Default.GetBytes(dr.GetString(1));
return nameInfo;
}
else
return null;
}
}
catch (Exception)
{
//Do any logging operation here if necessary
return null;
}
}
}
希望对大家有用!
//保存函数
private void button1_Click(object sender, EventArgs e)
{
NameInfo nameInfo = new NameInfo();
nameInfo.name = this.comboBox1.Text;
System.IO.MemoryStream mstream = new System.IO.MemoryStream();
this.richTextBox1.SaveFile(mstream, RichTextBoxStreamType.RichText);
//将流转换成数组
byte[] bWrite = mstream.ToArray();
nameInfo.info = bWrite;
if (DbAccess.Create(nameInfo))
{
this.Close();
}
else
{
MessageBox.Show("创建失败");
}
}
//数据库存储函数
public static bool Create(NameInfo nameInfo)
{
try
{
using (SQLiteConnection conn = new SQLiteConnection(sConn))
{
conn.Open();
SQLiteCommand cmd = conn.CreateCommand();
cmd.CommandText = "INSERT INTO nameInfor(name,infor) VALUES(@name,@infor);";
cmd.Parameters.Add(new SQLiteParameter("name", nameInfo.name));
cmd.Parameters.Add(new SQLiteParameter("infor", nameInfo.info));
int i = cmd.ExecuteNonQuery();
return i == 1;
}
}
catch (Exception)
{
//Do any logging operation here if necessary
return false;
}
}
//查询并显示函数
private void button2_Click(object sender, EventArgs e)
{
EditForm editForm = new EditForm();
NameInfo nameInfo=DbAccess.GetByName(this.comboBox1. Text);
byte[] bWrite = (byte[])nameInfo.Info;
//将数组转换成stream
System.IO.MemoryStream mstream = new System.IO.MemoryStream(bWrite, false);
//将stream填充到RichTextBox
editForm.richTextBox1.LoadFile(mstream, RichTextBoxStreamType.RichText);
editForm.Show();
}
//查询数据库的函数
public static NameInfo GetByName(string name)
{
try
{
using (SQLiteConnection conn = new SQLiteConnection(sConn))
{
conn.Open();
SQLiteCommand cmd = conn.CreateCommand();
cmd.CommandText = "SELECT * FROM nameInfor WHERE name=@name;";
cmd.Parameters.Add(new SQLiteParameter("name", name));
SQLiteDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
NameInfo nameInfo = new NameInfo();
nameInfo.name = dr.GetString(0);
nameInfo.info = System.Text.Encoding.Default.GetBytes(dr.GetString(1));
return nameInfo;
}
else
return null;
}
}
catch (Exception)
{
//Do any logging operation here if necessary
return null;
}
}
}
希望对大家有用!
相关文章推荐
- RichTextBox实现关键字自定义颜色显示(C#)
- RichTextBox实现关键字自定义颜色显示(C#)
- RichTextBox实现关键字自定义颜色显示(C#)
- wince应用程序(实现 获取存储设备的大小、实现 WINCE 系统重新启动、隐藏/显示 Windows 任务栏等等)【C#】
- 用C#实现图片数据库存储与显示
- 【C#】【转】RichTextBox实现关键字自定义颜色显示(C#)
- RichTextBox实现关键字自定义颜色显示(C#)
- RichTextBox实现关键字自定义颜色显示(C#)
- 用C#实现图片数据库存储与显示
- 用C#实现图片数据库存储与显示
- wince应用程序(实现 获取存储设备的大小、实现 WINCE 系统重新启动、隐藏/显示 Windows 任务栏等等)【C#】
- C#简单实现显示中文格式星期几的方法
- java yyyy-MM-dd HH:mm:ss格式的时间存储到MySQL中时 HH:mm:ss显示为00:00:00.000000
- C# 实现程序只启动一次(多次运行激活第一个实例,使其获得焦点,并在最前端显示)
- JavaScript格式化数字显示格式
- c# DevExpress gridcontrol日期行的显示格式设置
- C# 页面显示简易的统计图表(使用image控件实现)
- C# 自定义类型通过实现IFormattable接口,来输出指定的格式和语言文化的字符串(例:DateTime)
- [转] C#实现在Sql Server中存储和读取Word文件 (Not Correct Modified)
- C#实现将Doc文档转换成rtf格式的方法示例