Maison > Article > développement back-end > C# Comment implémenter une méthode simple de défilement synchrone de deux barres de défilement de contrôle richtextbox
Cet article vous présente principalement une méthode simple en C# pour réaliser le défilement synchrone de deux barres de défilement de contrôle richtextbox. L'introduction dans l'article est très détaillée et a une certaine valeur de référence et d'apprentissage pour tous les amis qui en ont besoin. regarde 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 de personnalisation des contrôles 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 une méthode simple et rapide à mettre en œuvre : la fonction de synchronisation de la barre de défilement 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 consiste à obtenir le numéro de ligne dans le contrôle richtextbox où se trouve la souris actuelle
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 La fonction de synchronisation de la barre de défilement est réalisée.
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
dans l'événement VScroll de richTextBox1 Add ; le code suivant, attention, j'ai un ? , 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 la différence est trop grande, ajustez la valeur. par vous-même.
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!