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< de richTextBox1 ; Ajoutez le code suivant à l'événement 🎜> 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); }
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!