2008-10-15 10 views

Répondre

10

Voici ce que je fais:

using System.Runtime.InteropServices; 

[DllImport("user32.dll")] 
static extern int SendMessage(IntPtr hWnd, uint wMsg, 
           UIntPtr wParam, IntPtr lParam); 

puis appelez:

SendMessage(myRichTextBox.Handle, (uint)0x00B6, (UIntPtr)0, (IntPtr)(-1)); 

Cela semble ok - vous pourriez avoir besoin de modifier les choses un peu, cependant.

Espérons que ça aide.

+0

où dois-je appeler SendMessage? – Nick

0

window.scrollBy (0,20);

Cela fait défiler la fenêtre. 20 est une valeur approximative que j'ai utilisée dans le passé qui équivaut typiquement à une ligne ... mais bien sûr, la taille de la police peut avoir une incidence sur la distance réelle d'une ligne.

0

Si vous pouvez obtenir le contrôle de défilement pour la zone de texte enrichi, vous devriez être en mesure d'obtenir sa propriété SmallChange et l'utiliser pour faire défiler le texte.

1

Pour référence future, le message EM_LINESCROLL est ce que vous envoyez à n'importe quel contrôle d'édition multiligne pour définir la position de défilement. Vous pouvez faire défiler verticalement ou horizontalement. Voir MSDN pour plus de détails.

Vous pouvez également utiliser la méthode de sélection Rich Edit, où vous définissez l'index de caractère (que vous pouvez obtenir avec EM_LINEINDEX) puis appelez RichEdit.ScrollToCaret-à-dire:

RichEdit.SelectionStart = SendMessage(RichEdit.Handle, EM_LINEINDEX, ScrollTo, 0); 
RichEdit.ScrollToCaret(); 

Ce défilera cette ligne vers le haut du contrôle d'édition.

Questions connexes