>백엔드 개발 >C#.Net 튜토리얼 >C#에서 두 개의 richtextbox 컨트롤 스크롤 막대의 동기 스크롤을 구현하는 방법에 대한 자세한 설명

C#에서 두 개의 richtextbox 컨트롤 스크롤 막대의 동기 스크롤을 구현하는 방법에 대한 자세한 설명

黄舟
黄舟원래의
2017-05-21 10:45:402564검색

이 글에서는 주로 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

스크롤 막대와 함께 스크롤되도록 합니다. 🎜> 이벤트

에 다음 코드를 추가하세요. 여기에 코드가 있나요? 는 레이아웃 이유(예: 컨트롤 크기 등)로 인해 두 개의 리치 텍스트 상자가 동기화되지 않을 수 있는 특정 오프셋을 나타냅니다.

일반적으로 0을 씁니다. 간격이 너무 크면 정수

값을 직접 조정하세요.

     private void richTextBox1_VScroll(object sender, EventArgs e)
     {
      int crntLastLine= GetLineNoVscroll(richTextBox1, panel1)-?;
       TrunRowsId(crntLastLine, richTextBox2);
     }
마지막으로 두 스크롤바가 동기적으로 스크롤됩니다

요약

위 내용은 C#에서 두 개의 richtextbox 컨트롤 스크롤 막대의 동기 스크롤을 구현하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.