Maison  >  Article  >  développement back-end  >  Explication détaillée de la façon d'implémenter le défilement synchrone de deux barres de défilement de contrôle Richtextbox en C#

Explication détaillée de la façon d'implémenter le défilement synchrone de deux barres de défilement de contrôle Richtextbox en C#

黄舟
黄舟original
2017-05-21 10:45:402365parcourir

Cet article vous présente principalement la méthode simple de C#implémentation de deux richtextboxcontrôles barres de défilement pour défiler de manière synchrone. L'introduction dans l'article est très détaillée et a une certaine référence pour tout le monde. .Valeur, amis dans le besoin venez jeter un oeil ci-dessous.

Préface

Parfois, nous devons implémenter des articles de comparaison, etc., et souvent placer le texte dans deux contrôles richtextbox, mais si nous en avons besoin Faites défiler et visualisez simultanément pour obtenir de meilleurs effets de visualisation.

Bien sûr, la méthode traditionnelle de surcharge des contrôles ou des contrôles personnalisés peut atteindre l'objectif, mais elle est très gênante pour les novices ou les personnes qui souhaitent utiliser ce contrôle une seule fois. Je vais donc proposer ensuite un moyen simple et rapide de mise en œuvre : la fonction de synchronisation de la barre de défilement de richtextbox.

La méthode est la suivante :

Tout d'abord, nous créons deux contrôles richtextbox dans le formulaire winform

Deux méthodes sont présentées ci-dessous. J'utilise souvent la

première méthode pour obtenir le numéro de ligne dans le contrôle richtextbox où se trouve le courant. la souris est localisée


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

La deuxième méthode consiste à accéder rapidement à une certaine ligne dans le contrôle richtextbox

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

      }
    }

Avec ces deux méthodes, nous pouvons réaliser La fonction de synchronisation de la barre de défilement est désormais disponible.

L'idée est la suivante : tout d'abord, lorsque richtextbox1 défile, obtenez le numéro de ligne correspondant à la souris de richtextbox1 via la méthode GetLineNoVscroll. Ensuite,

localise le numéro de ligne de richtexbox1 obtenu dans richtextbox2 via la méthode TrunRowsId, de sorte que richtextbox2 défile avec la barre de défilement richtexbox1

soit dans le VScroll Remarque : en ai-je un ici ? , représente un certain décalage. Les deux zones de texte riches peuvent être désynchronisées pour des raisons de mise en page (telles que la taille du contrôle, etc.)

En général, écrivez simplement 0. Si l'écart est trop grand, ajustez-le vous-même.

entierValeur.

     private void richTextBox1_VScroll(object sender, EventArgs e)
     {
      int crntLastLine= GetLineNoVscroll(richTextBox1, panel1)-?;
       TrunRowsId(crntLastLine, richTextBox2);
     }
Enfin, les deux barres de défilement défilent de manière synchrone

Résumé

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn