WPF textBox中简单处理文字滚动显示问题,另外用代码去边框

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chuangand/article/details/49803059

           本人在项目中遇到了一个问题,就是在textBox中显示一段文字,达到分页滚动的效果。比如说一长段文字,超出了文本框的显示。于是就想着把这一段文字均分成几段,用线程刷新界面,每隔固定的秒数,循环显示。技术有限,不喜勿碰,只做自己总结。

        首先,在拖入一个textBox控件,Name = "LS"

        然后,进行一些定义:

       

     int _nCurPage = 0;//定义当前页
     string get;      //用来获取分段的文字

        //文字源,自己找的
        string str = "人生,怕的就是心累,痛的就是流泪。属于自己的风景,从来不曾错过,不是自己的风景,永远只是路过。天地太大,人太渺小,不是每一道亮丽的风景都能拥有。一辈子,只求有一道令自己流连忘返,不离不弃的风景就已足够。每一颗心,都有一份无法替代的情愫和某一道风景永远关联着,人生的风景,是物也是人。生在尘世,每个人,都不可避免的要经历一场寒风和苦雨。我们每走一段路,都会遇到一道坎,或高,或低。每经一件事,都会成长一次,或多,或少。每动一次情,都会受伤一回,或深,或浅。每听一首歌,都会动容一心,或忧,或喜。礁石阻拦不住江水东流,悲伤遮掩不住时光飞逝。我们的一生,究竟有多少沟坎要独自跨越,又有多少遗憾留给岁月。一路奔波追求,忙忙碌碌,相聚分离,过客匆匆;偶遇邂逅,进进出出,苦辣酸甜,喜喜忧忧。绚烂的花朵,成熟的身心,来自多年的磨砺,人放松,心放平,让生活轻松,让生命丰厚。人活着就是一种修行,看开处处充满生机,看透天天都是春季。人生没有假设,没有如果,过去的是永远,当下才是全部。用一颗平常心,平凡的活着,梦自己所梦,想自己所想,爱自己所爱。珍惜身边的幸福,欣赏自己的拥有,背不动的就放下,伤不起的就看淡,想不通的就丢开,恨不过的就抚平。人生本来就不易,生命本来就不长,何必用无谓的烦恼,作践自己,伤害岁月。从容达观一些,轻松自在一些,豁达随意一些.岁月中,人们奔波进取,于坎坷间洒满汗水,脸上身上全是疲惫。尘世间,人们期盼美好,憧憬美好,鲜有如愿以偿。累了悄悄藏在心底,痛了默默流泪,多少难言的苦楚,于泪中轻轻释放。生活,就是这样,想好的,不知不觉慢慢就变了,说好的,走着做着渐渐就改变了。尘埃落定,时过境迁,你才理解错失,感到痛惜。烟消云散,物是人非,你才明白过失,感到惋惜。原来,事到临头,所有的感叹都变成伤痕,情到尽头,所有的情绪都变成疼痛。生命穿过四季,便体会了风霜雪雨,缘分经过聚散,便沉淀了真情实意,感情走过岁月,便领悟了人情冷暖。真爱你的人,会不离不弃,路过你的人,只是一时痴迷。许多的话,不要用耳朵听,而是用心听,许多的人,不要用眼睛看,而是用心看。热烈的未必长久,淡然的未必无心,陪你到最后的,才是真爱你的人。人生在世,谁都不易,生活在外,谁都有泪。即使身受挫折,蒙受不白,也不要轻易放弃。";        //网上随便找的文章,关键字是够长</span>

        其次,在窗体的Load事件中添加处理线程 

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            Thread newThread = new Thread(new ThreadStart(GetData));
            newThread.Start();
        }

        最后,定义一下处理程序,重要的地方

        

        private void GetData()
        {
            while (true)
            {
                int YeShu = 10;           //用户自己定义显示页数
                int Totals = str.Length;//获得字符总长度
                int YeShuTotals = Totals / YeShu;//每页显示的字符长度

                char[] arrChar = str.ToCharArray();//把字符串进行转换,便于处理
                get = null;      //先设置为空

                for (int j = 0; j < YeShuTotals; j++) //获取一页的文字
                {
                    get += arrChar[_nCurPage*YeShuTotals + j].ToString();
                } 
          
                 this.Dispatcher.Invoke(new Action(delegate
                {
                    textBox1.TextWrapping = TextWrapping.Wrap;//自动换行
                    textBox1.Text = get;  //赋值
                }));
                 _nCurPage = (_nCurPage + 1) % YeShu;     //获得当前页
                 Thread.Sleep(3000);      //延时3秒,可以自己看情况设定
            }
        }

这里只截取了三张,当滚动完毕自后,回到第一页。有兴趣可以自己也编写一下,看看效果。

同时也适用于在listBox中进行分页循环显示。本人自己也试验过。

在做WPF过程中,listView,textBox,和listBox中会出现边框,在XAML中很好隐藏,

我试了一下在代码中实现,可以直接使用,效果不错:

 ScrollViewer.SetHorizontalScrollBarVisibility(listBox1, ScrollBarVisibility.Hidden);
 ScrollViewer.SetVerticalScrollBarVisibility(listBox1, ScrollBarVisibility.Hidden);

( 一点小总结,见笑。)


猜你喜欢

转载自blog.csdn.net/chuangand/article/details/49803059
今日推荐