이 글에서는 두 개의 리치텍스트 상자 컨트롤 스크롤 막대의 동기식 스크롤을 실현하는 C#의 간단한 방법을 주로 소개합니다. 글의 소개는 매우 자세하며 필요한 모든 사람을 위한 특정 참조 및 학습 가치가 있습니다. .
Foreword
때로는 기사 등을 비교해야 하고 텍스트를 두 개의 richtextbox 컨트롤에 넣어야 하는 경우가 많습니다. 그러나 동시에 스크롤하고 봐야 하는 경우 더 나은 보기 효과를 얻을 수 있습니다.
물론 컨트롤을 오버로드하거나 컨트롤을 사용자 정의하는 전통적인 방법으로도 목표를 달성할 수 있지만 초보자나 이 컨트롤을 한 번만 사용하려는 사람들에게는 매우 번거로운 일입니다. 그래서 다음에는 간단하고 빠른 구현 방법인 richtextbox 스크롤 막대 동기화 기능을 제공하겠습니다.
방법은 다음과 같습니다.
먼저 winform 형식으로 두 개의 richtextbox 컨트롤을 만듭니다.
제가 자주 사용하는 두 가지 방법을 소개합니다.
첫 번째 방법은 get입니다. 현재 마우스 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 메소드를 사용하여 richtextbox1의 행 번호를 richtextbox2에 배치하여 richtextbox2가 richtexbox1
의 스크롤 막대와 함께 스크롤하도록 합니다.
richTextBox1의 VScroll 이벤트에 다음 코드를 추가합니다. 여기? , 특정 오프셋을 나타냅니다. 두 개의 리치 텍스트 상자는 레이아웃 이유(예: 컨트롤 크기 등)로 인해 동기화되지 않을 수 있습니다. 일반적으로 0을 쓰십시오. 차이가 너무 크면 직접 값을 조정하십시오.
private void richTextBox1_VScroll(object sender, EventArgs e) { int crntLastLine= GetLineNoVscroll(richTextBox1, panel1)-?; TrunRowsId(crntLastLine, richTextBox2); }
요약
위 내용은 C# 두 개의 richtextbox 컨트롤 스크롤 막대를 동기식으로 스크롤하는 간단한 방법을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!