自己封装的类用于操作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>
        ///获取富文本框内内容,保存在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 ((document.Blocks.ElementAt(i)).GetType().Equals(typeof(BlockUIContainer)))
                {
                    BlockUIContainer uicontainer = document.Blocks.ElementAt(i) as BlockUIContainer;
                    obj.Add(uicontainer.Child);
                }
            }
        }
    }
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 b2汽车驾驶证年审过期几天怎么办 上海驾照到期人在外地怎么办 交警开的罚单交不了怎么办 珠海交警微信交罚单扣分怎么办 驾驶证违法罚款单子没有了怎么办 转账密码输错3次怎么办 汽车违章扣6分怎么办 汽车扣了72分年检怎么办 汽车扣了50分怎么办 汽车扣了15分怎么办 汽车扣了27分怎么办 汽车扣了40分怎么办 行驶证掉了怎么办 异地 高速上没带驾驶证行驶证怎么办 身份证驾驶证行驶证都丢了怎么办 驾驶证年审过期一个月怎么办 柴油车辆年检尾气不合格怎么办 驾驶证过期了5天怎么办 过了审车时间怎么办 骑车没带行驶证怎么办 轿车行驶证丢了怎么办 车子没年检被扣怎么办 上海车辆年检过期了怎么办 行驶证过期十天怎么办 行驶证盖章满了怎么办 驾照c证扣12分怎么办 两年小车忘年审怎么办 4年车检过期了怎么办 车检过期了1周怎么办 超过检车几天了怎么办 驾驶证扣两个6分怎么办 行驶证检验有效期过期怎么办 驾驶证被扣26分怎么办 c1驾驶证扣26分怎么办 驾驶证被扣6分后怎么办 c1驾照年审过期一天怎么办 审驾照时间过了怎么办 b2驾驶证扣了分怎么办 a2驾照逾期未审怎么办 中学生只想打游戏不肯学习怎么办 汽车4年未年检怎么办