이 글에서는 주로 C#두 개의 리치 텍스트 상자컨트롤 스크롤 막대를 구현하여 동기식으로 스크롤하는 간단한 방법을 소개합니다. 글의 소개는 매우 자세하며 모든 사람을 위한 특정 참고 자료가 있습니다. .가치, 도움이 필요한 친구들이 와서 아래를 살펴보세요.
서문
때때로 비교 기사 등을 구현해야 하고 텍스트를 두 개의 richtextbox 컨트롤에 넣는 경우가 많지만 필요한 경우 더 나은 보기 효과를 얻으려면 동시에 스크롤하고 볼 수 있습니다.
물론 전통적인 오버로딩 컨트롤이나 커스텀 컨트롤도 목적을 달성할 수 있지만, 초보자나 이 컨트롤을 한 번만 사용하려는 사람들에게는 매우 번거로운 작업입니다. 그래서 다음에는 간단하고 빠른 구현 방법인 richtextbox 스크롤 막대 동기화 기능을 제공하겠습니다.
방법은 다음과 같습니다.
먼저 winform 형식에 두 개의 richtextbox 컨트롤을 만듭니다
아래에는 두 가지 방법이 소개되어 있습니다. 저는 현재
첫 번째 방법을 사용하여 리치 텍스트 상자 컨트롤에서 줄 번호를 가져옵니다. 마우스 위치
private int GetLineNoVscroll(RichTextBox rtb) { //获得当前坐标信息 Point p = rtb.Location; int crntFirstIndex = rtb.GetCharIndexFromPosition(p); int crntFirstLine = rtb.GetLineFromCharIndex(crntFirstIndex); return crntFirstLine; }
두 번째 방법은 리치 텍스트 상자 컨트롤의 특정 줄로 빠르게 이동하는 것입니다
private void TrunRowsId(int iCodeRowsID, RichTextBox rtb) { try { rtb.SelectionStart = rtb.GetFirstCharIndexFromLine(iCodeRowsID); rtb.SelectionLength = 0; rtb.ScrollToCaret(); } catch { } }
이 두 가지 방법을 사용하면 스크롤을 달성할 수 있습니다. 바 동기화 기능.
아이디어는 다음과 같습니다. 먼저 richtextbox1이 스크롤할 때 GetLineNoVscroll 메서드를 통해 richtextbox1의 마우스 해당 줄 번호를 얻습니다. 그런 다음
은 TrunRowsId 메서드를 통해 richtextbox2에서 얻은 richtexbox1의 줄 번호를 찾아서 richtextbox2가 richTextBox1의 VScroll<에 있는 richtexbox1
스크롤 막대와 함께 스크롤되도록 합니다. 🎜> 이벤트
에 다음 코드를 추가하세요. 여기에 코드가 있나요? 는 레이아웃 이유(예: 컨트롤 크기 등)로 인해 두 개의 리치 텍스트 상자가 동기화되지 않을 수 있는 특정 오프셋을 나타냅니다. 값을 직접 조정하세요.private void richTextBox1_VScroll(object sender, EventArgs e) { int crntLastLine= GetLineNoVscroll(richTextBox1, panel1)-?; TrunRowsId(crntLastLine, richTextBox2); }
위 내용은 C#에서 두 개의 richtextbox 컨트롤 스크롤 막대의 동기 스크롤을 구현하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!