媒介
有时候我们须要完成对比文章等,每每将文本放到两个richtextbox控件中,然则,假如我们须要同步转动检察,来到达更好的寓目结果。
固然,传统的要领重载控件或许自定义控件都可以到达目标,然则关于新手或许想仅仅只用一次这个控件的人来讲,是异常贫苦的。所以,接下来我来供应一种简朴疾速的要领来完成:richtextbox转动条同步的功用。
要领以下:
起首,我们在winform窗体建立两个richtextbox控件
下面引见两个要领,我常常用到
第一个要领,取得当前鼠标地点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控件转动条同步转动的要领详解的细致内容,更多请关注ki4网别的相干文章!