• 技术文章 >后端开发 >C#.Net教程

    C#中如何实现两个richtextbox控件滚动条同步滚动的方法详解

    黄舟黄舟2017-05-21 10:45:40原创1553
    这篇文章主要给大家介绍了C#实现两个richtextbox控件滚动条同步滚动的简单方法,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。

    前言

    有时候我们需要实现对照文章等,往往将文本放到两个richtextbox控件中,但是,如果我们需要同步滚动查看,来达到更好的观看效果。

    当然,传统的方法重载控件或者自定义控件都可以达到目的,但是对于新手或者想仅仅只用一次这个控件的人来说,是非常麻烦的。所以,接下来我来提供一种简单快捷的方法来实现:richtextbox滚动条同步的功能。

    方法如下:

    首先,我们在winform窗体创建两个richtextbox控件

    php入门到就业线上直播课:进入学习

    下面介绍两个方法,我经常用到

    第一个方法,获得当前鼠标所在richtextbox控件中的行号


    private int GetLineNoVscroll(RichTextBox rtb)
        {
          //获得当前坐标信息
          Point p = rtb.Location;
          int crntFirstIndex = rtb.GetCharIndexFromPosition(p);
          int crntFirstLine = rtb.GetLineFromCharIndex(crntFirstIndex);
          return crntFirstLine;
        }

    第二个方法,快速转到richtextbox控件中某行

    private void TrunRowsId(int iCodeRowsID, RichTextBox rtb)
        {
          try
          {
            rtb.SelectionStart = rtb.GetFirstCharIndexFromLine(iCodeRowsID);
            rtb.SelectionLength = 0;
            rtb.ScrollToCaret();
          }
          catch
          {
    
          }
        }

    有了这两个方法,我们就可以实现滚动条同步的功能了。

    思路如下:第一,当richtextbox1滚动时,通过GetLineNoVscroll方法,获得richtextbox1的鼠标对应行号。然后

    通过TrunRowsId方法,将获得的richtexbox1的行号定位到richtextbox2中,从而达到richtextbox2跟着richtexbox1

    滚动条一起滚动;

    在richTextBox1的VScroll事件中添加如下代码,注意,我这里有个?,代表某个偏移量,可能因为布局原因(如控件大小等)

    导致两个richtextbox不同步,一般写0就可以了,如果差距过大,自行调整数值。

         private void richTextBox1_VScroll(object sender, EventArgs e)
         {
          int crntLastLine= GetLineNoVscroll(richTextBox1, panel1)-?;
           TrunRowsId(crntLastLine, richTextBox2);
         }

    最后,实现了两个滚动条同步滚动

    总结

    以上就是C#中如何实现两个richtextbox控件滚动条同步滚动的方法详解的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    上一篇:深入了解ASP.NET MVC与WebForm的区别 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• c语言中源文件编译后生成什么文件• c语言标识符有哪些类型• ASP.NET使用Ajax如何返回Json对象的方法具体介绍• C#中GDI+编程10个基本技巧二• 应用绝对路径与相对路径
    1/1

    PHP中文网