2014-06-06 3 views
1

J'utilise Visual Studio 2008 et semble qu'il n'y a pas de fonction CaretPosition dans les propriétés richtextbox. Comment puis-je obtenir les lignes entières à la position du curseur? Par exemple, je l'ai écrit:Comment obtenir la chaîne entière à la ligne de la position du curseur dans RichTextBox?

   show databases; 
       show tables;/* (the caret (|) is flashing just here so after pressing a button i want to display "show tables"*/ 
       show functions; 

Comment puis-je faire? Merci d'avance.

+0

Si vous pouviez montrer votre code, nous pourrions être en mesure d'être plus utile. –

Répondre

2

Si vous utilisez WPF:

 TextPointer caretPos = rtb.CaretPosition; 
     TextPointer start=caretPos.GetLineStartPosition(0); 
     TextPointer end = (caretPos.GetLineStartPosition(1) != null ? caretPos.GetLineStartPosition(1) : caretPos.DocumentEnd); 

     TextRange tr = new TextRange(start, end); 
     MessageBox.Show(tr.Text); 

GetLineStartPosition(0) retourne un objet TextPointer avec la position du début de la ligne actuelle. GetLineStartPosition(1) renvoie un objet TextPointer avec la position du début de la ligne suivante.

Si le curseur est placé dans la dernière ligne, le caretPos.GetLineStartPosition(1) renverra null. Vous pouvez résoudre ce problème en utilisant le caretPos.DocumentEnd.


Si vous utilisez WinForms:

 string[] lines = rtb.Lines; 
     MessageBox.Show(lines[rtb.GetLineFromCharIndex(rtb.SelectionStart)]); 

rtb.GetLineFromCharIndex(rtb.SelectionStart) méthode renvoie le numéro de la ligne où est placé le curseur.

0

Il ya très certainement est une propriété RichTextBox.CaretPosition disponible à partir de .NET Framework version 3.0.

+0

Non, dans ma classe je n'ai pas GetCarPosition, dans l'intellisense il n'apparaît pas. – user3686730

+0

Quelle est la version de .NET Framework que vous utilisez? – GeorgeChond

+0

Visual Studio 2008 avec 3.5 Net Framework, je sais est étrange, mais GetCarPosition n'existe pas. – user3686730

Questions connexes