Freigeben über


RichTextBox.GetLineFromCharIndex-Methode

Ruft die Zeilennummer von der angegebenen Zeichenposition im Text des RichTextBox-Steuerelements ab.

Namespace: System.Windows.Forms
Assembly: System.Windows.Forms (in system.windows.forms.dll)

Syntax

'Declaration
Public Overrides Function GetLineFromCharIndex ( _
    index As Integer _
) As Integer
'Usage
Dim instance As RichTextBox
Dim index As Integer
Dim returnValue As Integer

returnValue = instance.GetLineFromCharIndex(index)
public override int GetLineFromCharIndex (
    int index
)
public:
virtual int GetLineFromCharIndex (
    int index
) override
public int GetLineFromCharIndex (
    int index
)
public override function GetLineFromCharIndex (
    index : int
) : int

Parameter

  • index
    Die zu suchende Zeichenindexposition.

Rückgabewert

Die nullbasierte Nummer der Zeile, in der sich der Zeichenindex befindet.

Hinweise

Mit dieser Methode können Sie auf Grundlage des im index-Parameter der Methode angegebenen Zeichenindexes die Zeilennummer bestimmen. Die erste Zeile des Texts im Steuerelement gibt den Wert 0 (null) zurück. Die GetLineFromCharIndex-Methode gibt die Nummer der physikalischen Zeile zurück, in der sich das indizierte Zeichen im Steuerelement befindet. Wenn beispielsweise ein Teil der ersten logischen Zeile des Texts im Steuerelement in die nächste Zeile umbrochen wird, gibt die GetLineFromCharIndex-Methode 1 zurück, wenn das Zeichen am angegebenen Zeichenindex auf die zweite physikalische Zeile umbrochen wurde. Wenn WordWrap auf false festgelegt wurde, wird kein Teil der Zeile auf die nächste umbrochen, und die Methode gibt für den angegebenen Zeichenindex 0 (null) zurück. Mit dieser Methode können Sie feststellen, in welcher Zeile sich ein bestimmter Zeichenindex befindet. Nach Aufruf der Find-Methode zur Textsuche können Sie z. B. den Zeichenindex abrufen, an dem die Suchergebnisse gefunden wurden. Sie können diese Methode mit dem von der Find-Methode zurückgegebenen Zeichenindex aufrufen, um festzustellen, in welcher Zeile das Wort gefunden wurde.

In bestimmten Fällen löst GetLineFromCharIndex keine Ausnahme aus, wenn der index-Parameter ein ungültiger Wert ist. Beispiel:

  • Wenn der index-Parameter MinValue oder -1 ist, gibt GetLineFromCharIndex 0 (null) zurück.

  • Wenn der index-Parameter die Textlänge oder MaxValue ist, gibt GetLineFromCharIndex die Nummer der letzten Textzeile zurück, die nicht unbedingt mit Lines.Length-1 identisch sein muss. Dies hängt vom Wert der WordWrap-Eigenschaft ab.

Überprüfen Sie in diesen Fällen die Eingabe vor dem Aufruf von GetLineFromCharIndex.

Hinweis

Wenn der im index-Parameter angegebene Zeichenindex sich außerhalb der verfügbaren im Steuerelement enthaltenen Zeilennummern befindet, wird die letzte Zeilennummer zurückgegeben.

Beispiel

Im folgenden Codebeispiel wird die Verwendung der GetLineFromCharIndex-Methode veranschaulicht. Um das Beispiel auszuführen, fügen Sie den folgenden Code in einem Formular mit einem RichTextBox-Steuerelement mit dem Namen RichTextBox1, einer Schaltfläche mit dem Namen Button1 und zwei Textfeldern mit den Namen TextBox1 und TextBox2 ein. Geben Sie beim Ausführen des Beispiels in TextBox2 eine Suchzeichenfolge ein, und klicken Sie zum Abrufen der Suchergebnisse auf die Schaltfläche.

' This method demonstrates retrieving line numbers that 
' indicate the location of a particular word
' contained in a RichTextBox. The line numbers are zero-based.

Private Sub Button1_Click(ByVal sender As System.Object, _ 
    ByVal e As System.EventArgs) Handles Button1.Click

    ' Reset the results box.
    TextBox1.Text = ""

    ' Get the word to search from from TextBox2.
    Dim searchWord As String = TextBox2.Text

    Dim index As Integer = 0

    'Declare an ArrayList to store line numbers.
    Dim lineList As New System.Collections.ArrayList
    Do
        ' Find occurrences of the search word, incrementing  
        ' the start index. 
        index = RichTextBox1.Find(searchWord, index + 1, _
            RichTextBoxFinds.MatchCase)
        If (index <> -1) Then

            ' Find the word's line number and add the line 
            'number to the arrayList. 
            lineList.Add(RichTextBox1.GetLineFromCharIndex(index))
        End If
    Loop While (index <> -1)

    ' Iterate through the list and display the line numbers in TextBox1.
    Dim myEnumerator As System.Collections.IEnumerator = _
        lineList.GetEnumerator()
    If lineList.Count <= 0 Then
        TextBox1.Text = searchWord & " was not found"
    Else
        TextBox1.SelectedText = searchWord & " was found on line(s):"
        While (myEnumerator.MoveNext)
            TextBox1.SelectedText = myEnumerator.Current & " "
        End While
    End If

End Sub
// This method demonstrates retrieving line numbers that 
// indicate the location of a particular word
// contained in a RichTextBox. The line numbers are zero-based.

private void Button1_Click(System.Object sender, System.EventArgs e)
{

    // Reset the results box.
    TextBox1.Text = "";

    // Get the word to search from from TextBox2.
    string searchWord = TextBox2.Text;

    int index = 0;

    //Declare an ArrayList to store line numbers.
    System.Collections.ArrayList lineList = new System.Collections.ArrayList();
    do
    {
        // Find occurrences of the search word, incrementing  
        // the start index. 
        index = RichTextBox1.Find(searchWord, index+1, RichTextBoxFinds.MatchCase);
        if (index!=-1)

            // Find the word's line number and add the line 
            // number to the arrayList. 
        {
            lineList.Add(RichTextBox1.GetLineFromCharIndex(index));
        }
    }
    while((index!=-1));

    // Iterate through the list and display the line numbers in TextBox1.
    System.Collections.IEnumerator myEnumerator = lineList.GetEnumerator();
    if (lineList.Count<=0)
    {
        TextBox1.Text = searchWord+" was not found";
    }
    else
    {
        TextBox1.SelectedText = searchWord+" was found on line(s):";
        while (myEnumerator.MoveNext())
        {
            TextBox1.SelectedText = myEnumerator.Current+" ";
        }
    }
}
// This method demonstrates retrieving line numbers that 
// indicate the location of a particular word
// contained in a RichTextBox. The line numbers are zero-based.
void Button1_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
   
   // Reset the results box.
   TextBox1->Text = "";
   
   // Get the word to search from from TextBox2.
   String^ searchWord = TextBox2->Text;
   int index = 0;
   
   //Declare an ArrayList to store line numbers.
   System::Collections::ArrayList^ lineList = gcnew System::Collections::ArrayList;
   do
   {
      // Find occurrences of the search word, incrementing  
      // the start index. 
      index = RichTextBox1->Find( searchWord, index + 1, RichTextBoxFinds::MatchCase );
      if ( index != -1 )
      {
         lineList->Add( RichTextBox1->GetLineFromCharIndex( index ) );
      }
   }
   while ( (index != -1) );

   // Iterate through the list and display the line numbers in TextBox1.
   System::Collections::IEnumerator^ myEnumerator = lineList->GetEnumerator();
   if ( lineList->Count <= 0 )
   {
      TextBox1->Text = searchWord + " was not found";
   }
   else
   {
      TextBox1->SelectedText = searchWord + " was found on line(s):";
      while ( myEnumerator->MoveNext() )
      {
         TextBox1->SelectedText = myEnumerator->Current + " ";
      }
   }
}
// This method demonstrates retrieving line numbers that 
// indicate the location of a particular word
// contained in a RichTextBox. The line numbers are zero-based.
private void button1_Click(Object sender, System.EventArgs e)
{
    // Reset the results box.
    textBox1.set_Text("");
    // Get the word to search from from TextBox2.
    String searchWord = textBox2.get_Text();

    int index = 0;
    //Declare an ArrayList to store line numbers.
    System.Collections.ArrayList lineList =
        new System.Collections.ArrayList();
    do {
        // Find occurrences of the search word, incrementing  
        // the start index. 
        index = richTextBox1.Find(searchWord, index + 1,
            RichTextBoxFinds.MatchCase);
        if (index != -1) {
            // Find the word's line number and add the line 
            // number to the arrayList. 
            lineList.Add((System.Int32)richTextBox1.
                GetLineFromCharIndex(index));
        }
    } while (index != -1);
    // Iterate through the list and display the line numbers in TextBox1.
    System.Collections.IEnumerator myEnumerator = lineList.GetEnumerator();
    if (lineList.get_Count() <= 0) {
        textBox1.set_Text(searchWord + " was not found");
    }
    else {
        textBox1.set_SelectedText(searchWord + " was found on line(s):");
        while (myEnumerator.MoveNext()) {
            textBox1.set_SelectedText(myEnumerator.get_Current() + " ");
        }
    }
} //button1_Click

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

RichTextBox-Klasse
RichTextBox-Member
System.Windows.Forms-Namespace
GetCharIndexFromPosition
GetPositionFromCharIndex