2010-05-01 8 views
3

Comment obtenir affiché texte dans RichTextBox? Je veux dire que si RichTextBox est fait défiler jusqu'à la fin, j'aimerais recevoir seulement ces lignes, qui sont visibles pour moi.Comment obtenir du texte affiché de RichTextBox?

P.S.It'll suffisant pour obtenir la chaîne affichée fisrt

Répondre

5

Vous devez utiliser RichTextBox.GetCharIndexFromPosition(point).

Pour obtenir l'indice du premier caractère visible, passent new Point(0, 0) (le coin supérieur gauche de la zone client RTB) comme paramètre point
Pour obtenir l'index du dernier caractère visible, passez le new Point(rtb.ClientSize.Width, rtb.ClientSize.Height) en tant que paramètre point.

Vous pouvez ensuite utiliser RichTextBox.Text.Substring() pour obtenir tout le texte visible.

Si nécessaire, vous pouvez utiliser RichTextBox.GetLineFromCharIndex() pour convertir les index de caractères en numéros de ligne.

0

Regardez l'envoi du EM_GETFIRSTVISIBLELINE de message via la fonction API SendMessage.

0

De eggcafe:

" L'idée est d'obtenir le texte sous la barre de défilement zone visible

Vous devez savoir la hauteur du richtextbox et déterminer la hauteur du texte en utilisant la propriété TextHeight. du contrôle. diviser la hauteur du contrôle par la hauteur du texte.

par cela, vous pouvez déterminer le nombre maximum de lignes qui peuvent être logés dans le contrôle RichTextBox.

J'espère que cela résout ou au moins vous emmène près. "

Taken de http://www.eggheadcafe.com/community/aspnet/2/10073516/how-to-select-the-visible.aspx

0

Pas élégant, mais je pense que cela fonctionne.

//Force selection 

richTextBox.SelectAll(); 

//Get the selected text 

dataString = richTextBox.Selection.Text; 

Bien sûr, ne fonctionne pas si vous voulez permettre à l'utilisateur de sélectionner du texte, etc.