La meilleure façon de résoudre votre second problème est d'utiliser GetScrollInfo et SetScrollInfo. Je pense que vous devriez être en mesure de gérer les événements HScroll
et VScroll
, quand ils se déclenchent, vous devrez définir le nouveau ScrollInfo dans la deuxième RichTextBox.
Vous aurez également besoin de WM_SendMessage pour ce travail. (Toutes les usuable avec les importations de User32.dll)
travail habituel à faire:
S'informer lorsque l'utilisateur fait défiler (Scrollevents), et le nouveau réglage SCROLLINFO à la deuxième RichTextBox. Après avoir défini ScrollInfo, vous devez envoyer un message à la barre de défilement/contrôle pour faire défiler.
tout d'abord vous avez besoin de votre "propre" SCROLLINFO struct
[StructLayout(LayoutKind.Sequential)]
struct SCROLLINFO
{
public uint cbSize;
public uint fMask;
public int nMin;
public int nMax;
public uint nPage;
public int nPos;
public int nTrackPos;
}
obtenir ensuite le SCROLLINFO à ScrollingEvent dans la première zone de texte:
GetScrollInfo(this.Handle, SB_VERT, ref _si);
(où _Si est votre SCROLLINFO instance). Ensuite, envoyez le message à la barre de défilement
_si.nPos = 0815; //Your wanted new ScrollbarPosition (I think you can use the value of the first Scrollbar)
//// Reposition scroller
SetScrollInfo(Handle, SB_VERT, ref _si, true);
//// Send a WM_VSCROLL scroll message using SB_THUMBTRACK as wParam
//// SB_THUMBTRACK: low-order word of wParam, si.nPos high-order word of wParam
IntPtr ptrWparam = new IntPtr(SB_THUMBTRACK + 0x10000 * _si.nPos);
IntPtr ptrLparam = new IntPtr(0);
SendMessage(Handle, WM_VSCROLL, ptrWparam, ptrLparam);
Où HANDLE
est la poignée de votre RichTextBox qui doit être fait défiler - vous pouvez obtenir la poignée à tout moment en utilisant
RichTextBox.Handle
Vous devriez vraiment jeter un oeil à http://msdn.microsoft.com/en-us/library/bb787537%28VS.85%29.aspx et http://msdn.microsoft.com/en-us/library/ms644950%28VS.85%29.aspx
Il y a aussi quelques bons exemples à pinvoke.net (par exemple GetScrollInfo)
Pouvez-vous poster votre code? – Oded
Et peut-être une capture d'écran de votre interface? Je n'arrive pas à visualiser la suite de votre deuxième requête. –
WPF ou Windows Forms? – decyclone