Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erklärung, wie man synchrones Scrollen von zwei Richtextbox-Steuerelement-Bildlaufleisten in C# implementiert

Ausführliche Erklärung, wie man synchrones Scrollen von zwei Richtextbox-Steuerelement-Bildlaufleisten in C# implementiert

黄舟
黄舟Original
2017-05-21 10:45:402519Durchsuche

Dieser Artikel führt Sie hauptsächlich in die einfache Methode der C#Implementierung von zwei Richtextbox-Steuerelementen-Bildlaufleisten zum synchronen Scrollen ein. Die Einführung im Artikel ist sehr detailliert und bietet für jeden eine gewisse Referenz . Value, Freunde in Not kommen und schauen unten vorbei.

Vorwort

Manchmal müssen wir Vergleichsartikel usw. implementieren und den Text oft in zwei Richtextbox-Steuerelemente einfügen, aber wenn nötig Scrollen und betrachten Sie gleichzeitig, um bessere Anzeigeeffekte zu erzielen.

Natürlich kann der Zweck mit der herkömmlichen Methode des Überladens von Steuerelementen oder benutzerdefinierten Steuerelementen erreicht werden, aber für Anfänger oder Personen, die dieses Steuerelement nur einmal verwenden möchten, ist es sehr mühsam. Als nächstes werde ich eine einfache und schnelle Methode zur Implementierung bereitstellen: die Synchronisierungsfunktion der Richtextbox-Bildlaufleiste.

Die Methode ist wie folgt:

Zuerst erstellen wir zwei Richtextbox-Steuerelemente im Winform-Formular

Zwei Methoden werden unten vorgestellt. Ich verwende oft die

erste Methode, um die Zeilennummer im Richtextbox-Steuerelement abzurufen, wo die aktuelle Maus befindet sich


private int GetLineNoVscroll(RichTextBox rtb)
    {
      //获得当前坐标信息
      Point p = rtb.Location;
      int crntFirstIndex = rtb.GetCharIndexFromPosition(p);
      int crntFirstLine = rtb.GetLineFromCharIndex(crntFirstIndex);
      return crntFirstLine;
    }

Die zweite Methode besteht darin, schnell zu einer bestimmten Zeile im Richtextbox-Steuerelement zu wechseln

private void TrunRowsId(int iCodeRowsID, RichTextBox rtb)
    {
      try
      {
        rtb.SelectionStart = rtb.GetFirstCharIndexFromLine(iCodeRowsID);
        rtb.SelectionLength = 0;
        rtb.ScrollToCaret();
      }
      catch
      {

      }
    }

Mit diesen beiden Methoden Wir können erreichen: Die Funktion zur Synchronisierung der Bildlaufleiste ist jetzt verfügbar.

Die Idee ist wie folgt: Wenn richtextbox1 scrollt, ermitteln Sie zunächst die der Maus entsprechende Zeilennummer von richtextbox1 über die GetLineNoVscroll-Methode. Dann

sucht die erhaltene Zeilennummer von richtexbox1 in richtextbox2 über die TrunRowsId-Methode, sodass richtextbox2 mit der Bildlaufleiste

im VScrollEreignis

Hinweis: Habe ich hier einen? , stellt einen bestimmten Versatz dar, der aus Layoutgründen (z. B. Steuerelementgröße usw.) dazu führen kann, dass die beiden Richtextboxen nicht synchron sind.

Schreiben Sie im Allgemeinen einfach 0. Wenn die Lücke zu groß ist, Passen Sie es selbst an Ganzzahl

Wert.

Zuletzt werden die beiden Bildlaufleisten synchron gescrollt

     private void richTextBox1_VScroll(object sender, EventArgs e)
     {
      int crntLastLine= GetLineNoVscroll(richTextBox1, panel1)-?;
       TrunRowsId(crntLastLine, richTextBox2);
     }

Zusammenfassung

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung, wie man synchrones Scrollen von zwei Richtextbox-Steuerelement-Bildlaufleisten in C# implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn