Comment puis-je synchroniser le défilement des deux zones de texte multiligne?
Comment puis-je synchroniser le défilement des deux zones de texte multiligne en C# (WinForms)?
Lorsque vous faites défiler vers le haut/vers le bas d'une ligne dans Une zone de texte, zone de texte B doit défiler vers le haut/vers le bas.
Le même dans l'autre sens.
Est-ce réalisable sans contrôles personnalisés?
Impossible de répondre à moins que vous nous disiez ce type de graphique, cadre de que vous utilisez.
Juste valeur par défaut WinForms.
Juste valeur par défaut WinForms.
OriginalL'auteur lesderid | 2010-09-29
Vous devez vous connecter pour publier un commentaire.
Oui, vous aurez à créer une zone de texte de sorte que vous pouvez détecter de défilement. L'astuce est de faire passer le message de défilement à l'autre de la zone de texte afin de faire défiler la synchronisation. - Ce vraiment ne fonctionne bien que lorsque cette autre zone de texte est d'environ la même taille et le même nombre de lignes.
Ajouter une nouvelle classe de votre projet et de coller le code ci-dessous. Compiler. Déposez deux des nouveaux contrôles à partir du haut de la boîte à outils sur votre formulaire. Définir le Copain de la propriété à l'autre contrôle sur les deux. Exécuter, tapez du texte dans les deux d'entre eux et les regarder défiler la synchronisation de la mesure que vous faites glisser la barre de défilement.
C'est le miracle!!!!
Passant : je voulais réaliser similaire, mais dans le cas de deux vues de liste. j'ai essayé avec ce code mais sa ne marche pas. dois-je ajouter quelque chose à cela ?
Passant : Gr8 homme, actully j'avais mis copain propriété au mauvais endroit. gr8 travail.
Qui fonctionne déjà, la seule erreur que vous pouvez faire est de ne pas essayer.
OriginalL'auteur Hans Passant
Vous pouvez modifier cette ligne:
:
et il aura en charge le défilement avec la molette de la souris.
Malheureusement, bien que cela semble fonctionner, le scrolling devient hors de synchronisation avec la molette de la souris, et de la principale zone de texte défile plus vite que le copain.
Comment faire lorsque vous faites glisser le rouleau de diapositives et de la souris bouton gauche enfoncé, vous faites glisser le curseur en haut et en bas, la liste de contacts de vue ne semble pas réagir à la vitesse de défilement?
OriginalL'auteur John Willemse
Hans Passant la solution était génial. Cependant j'avais besoin de synchroniser les trois zones de texte et pas seulement deux.
Alors je l'ai modifié un peu - mais tout crédit doit aller à Hans, il n'y a pas moyen, j'aurais même eu près sans son travail - je pensais le poster de retour ici dans le cas d'autres ont besoin de la même chose.
SyncBox classe:
Puis sous la forme initilizer:
OriginalL'auteur Morvael
Hans Passant de la solution a fonctionné comme un charme, mais j'avais besoin d'un RichTextBox avec à la fois horizontal et vertical des barres de défilement. Si vous étendez un RichTextBox au lieu d'une zone de texte, vous aurez besoin de changer la propriété ScrollBars en conséquence (j'ai utilisé RichTextBoxScrollBars.À la fois).
Si vous souhaitez synchroniser le défilement horizontal ainsi, chercher
(m.Msg == 0x115) || (m.Msg == 0x114)
.OriginalL'auteur g_man_super_g
Ici est ce qui finalement m'a aidé à résoudre la synchronisation de plusieurs zones de texte à l'aide de la molette souris.
Je me suis basé sur du très utiles Hans exemple.
OriginalL'auteur Michael Ros