自己封装的类用于操作RichTextBox内容,方便获取和设置RichTextBox内容
来源:互联网 发布:淘宝神笔怎么取消 编辑:程序博客网 时间:2024/06/04 18:36
该类包含两个静态方法,第一个参数为需要获取或设置的RichTextBox,第二个参数List<Object> obj为放置内容的List,可存放图片(Image)或文字(Run),若某位置为空时,则添加新的段落(即添加换行),很方便
///<summary>
///解析富文本框
///</summary>
///<param name="ImgPath">图标路径</param>
public class RichTextBoxParseHelper
{
///<summary>
///设置富文本框内内容,obj中共可设两种类型数据,Image(图片)和Run(文字),若某位置为空则添加换行
///</summary>
///<param name="mainBox">富文本框</param>
///<param name="obj">填充的内容</param>
static public void SetBoxContent(System.Windows.Controls.RichTextBox mainBox, ref List<Object> obj)
{
FlowDocument document = mainBox.Document;
Paragraph para = new Paragraph();
document.Blocks.Add(para);
for (int index = 0; index < obj.Count; index++)
{
if (obj[index] == null)
{
//添加新段落
para = new Paragraph();
document.Blocks.Add(para);
}
else
{
//文字内容
if (obj[index].GetType().Equals(typeof(Run)))
{
Run newrun = new Run();
newrun.Text = (obj[index] as Run).Text;
para.Inlines.Add(newrun);
}
//图片内容
else if (obj[index].GetType().Equals(typeof(System.Windows.Controls.Image)))
{
System.Windows.Controls.Image newImg = new System.Windows.Controls.Image();
newImg.Source = (obj[index] as System.Windows.Controls.Image).Source;
newImg.Width = 100;
newImg.Height = 100;
//添加图片
InlineUIContainer newContain = new InlineUIContainer();
newContain.Child = newImg;
para.Inlines.Add(newContain);
}
}
}
}
///解析富文本框
///</summary>
///<param name="ImgPath">图标路径</param>
public class RichTextBoxParseHelper
{
///<summary>
///设置富文本框内内容,obj中共可设两种类型数据,Image(图片)和Run(文字),若某位置为空则添加换行
///</summary>
///<param name="mainBox">富文本框</param>
///<param name="obj">填充的内容</param>
static public void SetBoxContent(System.Windows.Controls.RichTextBox mainBox, ref List<Object> obj)
{
FlowDocument document = mainBox.Document;
Paragraph para = new Paragraph();
document.Blocks.Add(para);
for (int index = 0; index < obj.Count; index++)
{
if (obj[index] == null)
{
//添加新段落
para = new Paragraph();
document.Blocks.Add(para);
}
else
{
//文字内容
if (obj[index].GetType().Equals(typeof(Run)))
{
Run newrun = new Run();
newrun.Text = (obj[index] as Run).Text;
para.Inlines.Add(newrun);
}
//图片内容
else if (obj[index].GetType().Equals(typeof(System.Windows.Controls.Image)))
{
System.Windows.Controls.Image newImg = new System.Windows.Controls.Image();
newImg.Source = (obj[index] as System.Windows.Controls.Image).Source;
newImg.Width = 100;
newImg.Height = 100;
//添加图片
InlineUIContainer newContain = new InlineUIContainer();
newContain.Child = newImg;
para.Inlines.Add(newContain);
}
}
}
}
///<summary>
///获取富文本框内内容,保存在obj中,obj内共有两种类型数据(Image图片和Run文字),某位置为空时代表换行
///</summary>
///<param name="mainBox">富文本框</param>
///<param name="obj">保存文本框内容</param>
static public void GetBoxContent(System.Windows.Controls.RichTextBox mainBox,ref List<Object> obj)
{
FlowDocument document = mainBox.Document;
int paraBreak = 0;
for (int i = 0; i < document.Blocks.Count; i++)
{
if ((document.Blocks.ElementAt(i)).GetType().Equals(typeof(Paragraph)))
{
Paragraph para = document.Blocks.ElementAt(i) as Paragraph;
//添加回车
if (i != 0 && i != document.Blocks.Count)
{
//添加空数据作为换行标记
obj.Add(null);
}
for (int j = 0; j < para.Inlines.Count; j++)
{
if (para.Inlines.ElementAt(j).GetType().Equals(typeof(InlineUIContainer)))
{
InlineUIContainer childInline = para.Inlines.ElementAt(j) as InlineUIContainer;
obj.Add(childInline.Child);
}
else if (para.Inlines.ElementAt(j).GetType().Equals(typeof(Run)))
{
Run childRun = para.Inlines.ElementAt(j) as Run;
obj.Add(childRun);
}
paraBreak++;
}
else if (para.Inlines.ElementAt(j).GetType().Equals(typeof(Run)))
{
Run childRun = para.Inlines.ElementAt(j) as Run;
obj.Add(childRun);
}
paraBreak++;
}
}
else if ((document.Blocks.ElementAt(i)).GetType().Equals(typeof(BlockUIContainer)))
{
BlockUIContainer uicontainer = document.Blocks.ElementAt(i) as BlockUIContainer;
obj.Add(uicontainer.Child);
}
}
}
}
else if ((document.Blocks.ElementAt(i)).GetType().Equals(typeof(BlockUIContainer)))
{
BlockUIContainer uicontainer = document.Blocks.ElementAt(i) as BlockUIContainer;
obj.Add(uicontainer.Child);
}
}
}
}
0 0
- 自己封装的类用于操作RichTextBox内容,方便获取和设置RichTextBox内容
- WPF SL 获取RichTextBox 的内容(string)
- C# RichTextBox 修改内容
- WPF 读取和存储RichTextBox的文档内容
- WPF 保存和加载 RichTextBox 内容
- 将RichTextBox的内容直接写入数据库
- RichTextBox内容写到Graphics
- #382 – 将RichTextBox的内容保存为XAML文件(Persisting RichTextBox Contents as XAML)
- WPF RichTextBox的常用方法和属性(内容的读取/导入等)
- .NET中将RichTextBox控件的内容存入数据库
- [VB.NET]如何实现对 RichTextBox 内容的选定、复制?
- 操作RichTextBox
- RichTextBox操作
- RichTextbox 操作
- C# RichTextBox高度随内容动态变化
- (转载)C#richTextBox中的内容换行
- vb.net 逐行读取RichTextBox内容
- C#保持RichTextBox内容在底部
- HDU1862EXCEL排序
- Bloom Filter
- linux学习笔记
- Alliance Memory低功耗异步静态随机存储器选型参数表
- UVA 12002 Happy Birthday(dp+LIS)
- 自己封装的类用于操作RichTextBox内容,方便获取和设置RichTextBox内容
- 程序改错
- hadoop的成员项目简介
- java语言实现多生产者多消费者问题 多线程
- 完全背包问题思考与学习
- Dex Loader Unable to execute dex: java.nio.BufferOverflowException
- 输入四则运算的表达式,求解结果算法
- 云外包环境下LP的 安全性问题
- openfire 部署问题