C超簡單方法實現兩個richtextbox控制項滾動條同步滾動
有時候我們需要實現對照文章等,往往將文本放到兩個richtextbox控制項中,但是,如果我們需要同步滾動查看,來達到更好的觀看效果。
當然,傳統的方法重載控制項或者自定義控制項都可以達到目的,但是對於新手或者想僅僅只用一次這個控制項的人來說,是非常麻煩的。所以,接
下來我來提供一種簡單快捷的方法來實現:richtextbox滾動條同步的功能。
首先,我們在winform窗體創建兩個richtextbox控制項
下面介紹兩個方法,我經常用到
第一個方法,獲得當前滑鼠所在richtextbox控制項中的行號
1 private int GetLineNoVscroll(RichTextBox rtb)
2 {
3 //獲得當前坐標信息
4 Point p = rtb.Location;
5 int crntFirstIndex = rtb.GetCharIndexFromPosition(p);
6 int crntFirstLine = rtb.GetLineFromCharIndex(crntFirstIndex);
7 return crntFirstLine;
8 }
第二個方法,快速轉到richtextbox控制項中某行
1 private void TrunRowsId(int iCodeRowsID, RichTextBox rtb)
2 {
3 try
4 {
5 rtb.SelectionStart = rtb.GetFirstCharIndexFromLine(iCodeRowsID);
6 rtb.SelectionLength = 0;
7 rtb.ScrollToCaret;
8 }
9 catch
10 {
11
12 }
13 }
有了這兩個方法,我們就可以實現滾動條同步的功能了。
思路如下:第一,當richtextbox1滾動時,通過GetLineNoVscroll方法,獲得richtextbox1的滑鼠對應行號。然後
通過TrunRowsId方法,將獲得的richtexbox1的行號定位到richtextbox2中,從而達到richtextbox2跟著richtexbox1
滾動條一起滾動;
在richTextBox1的VScroll事件中添加如下代碼,注意,我這裡有個?,代表某個偏移量,可能因為布局原因(如控制項大小等)
導致兩個richtextbox不同步,一般寫0就可以了,如果差距過大,自行調整數值。
1 private void richTextBox1_VScroll(object sender, EventArgs e)
2 {
3 int crntLastLine= GetLineNoVscroll(richTextBox1, panel1)-?;
4 TrunRowsId(crntLastLine, richTextBox2);
5 }
最後,實現了兩個滾動條同步滾動
如果大家發現有其他問題,請在下方留言。本人剛開博客不久,大家互相學習,共同成長,謝謝
※selenium+python環境的搭建的自動化測試
※java源碼一帶一路系列之HashMap.compute()
※posts-3, comments-0, trackbacks-0
※Django項目部署到Apache伺服器
TAG:達人科技 |
※iOS swift UISearchBar拿到textfield控制項
※Web Forms Repeater 控制項
※win10系統出現Web瀏覽器阻止activex控制項提示如何解決
※Web Forms DataList 控制項
※Amazon的Fire電視立方體是一種以alexa控制的娛樂方式
※用setuptools_scm來自動控制Python包的版本
※「python」colorama 模塊-改變控制台輸出文本的顏色
※linux Web控制台
※Web Forms Validation 伺服器控制項
※為了3D控制項,Facebook就要和Sketchfab合作?
※SpringBoot整合Mybatis實現事務控制
※Kotlin 條件控制
※Cloud Commander:一個有控制台和編輯器的 Web 文件管理器
※米家App支持Siri!shortcut控制掃地機器人
※Kickstarter砍掉了吸血控制器 Thimbleweed擊中Kic球門
※實戰microPython(三)uPyBoard是如何控制機器人的
※第三方Windows 10音量控制應用程序EarTrumpet發布
※劫持者可以繞過 Active Directory 控制機制
※Magic Leap Mobile Companion應用將作為控制器替代輸入方式
※微軟Surface Pro 4終於加入Surface Dial屏幕上控制支持