用c#中的RichTextBox实现图文格式编排存储和格式化显示
来源:互联网 发布:上市公司财务报表数据 编辑:程序博客网 时间:2024/06/11 21:28
最近做项目要求把一个数据库查询出来的文章按格式进行显示,包括字体大小和颜色等格式等,开始使用很多方法,在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;
}
}
}
希望对大家有用!
- 用c#中的RichTextBox实现图文格式编排存储和格式化显示
- C# RichTextBox显示不同格式的字体
- C# RichTextbox的字体格式和颜色
- C#格式化中的货币格式
- C#中的数字格式化 格式日期格式化
- C#中的数字格式化、格式日期格式化
- 货币和数字格式编排
- RichTextBox中的RTF格式的读取和保存
- 在c#中的richTextBox中实现拖拽
- C# richTextBox显示不同颜色文字
- c#中RichTextBox显示word
- C#中的chart横坐标显示日期和时间格式问题
- C# richTextbox的 字体格式颜色等等
- C# richTextbox的 字体格式颜色
- C# richTextbox的 字体格式颜色等等
- 混合字符串在CANVAS中的编排显示
- 混合字符串在CANVAS中的编排显示
- C#读取Excel的显示和存储实现
- 美国人教你这样用Google,你真的会变特工
- 测试程序运行时间的方法
- 一些VC插件的简介
- Visual C++文件后缀名释义
- Spring管理
- 用c#中的RichTextBox实现图文格式编排存储和格式化显示
- Sql 中 Exists 的应用
- 使用visualvm远程监控JVM
- EJB
- eclipse3.2快捷键设置
- .live()已经弃用!
- Tomcat java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind
- Cross compiling wxDFB-2.8.11 for ARM-Linux
- VC++编写ActiveX控件