RichTextBox.GetLineFromCharIndex(Int32) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar radnumret från den angivna teckenpositionen i kontrollens RichTextBox text.
public:
int GetLineFromCharIndex(int index);
public:
override int GetLineFromCharIndex(int index);
public int GetLineFromCharIndex(int index);
public override int GetLineFromCharIndex(int index);
member this.GetLineFromCharIndex : int -> int
override this.GetLineFromCharIndex : int -> int
Public Function GetLineFromCharIndex (index As Integer) As Integer
Public Overrides Function GetLineFromCharIndex (index As Integer) As Integer
Parametrar
- index
- Int32
Teckenindexpositionen för sökning.
Returer
Det nollbaserade radnummer som teckenindexet finns i.
Exempel
Följande kodexempel visar hur du använder GetLineFromCharIndex metoden. Om du vill köra exemplet klistrar du in följande kod i ett formulär som innehåller en RichTextBox kontroll med namnet RichTextBox1, en knapp med namnet Button1 och två textrutor med namnet TextBox1 och TextBox2. När exemplet körs anger du en söksträng i TextBox2 och klickar på knappen för att hämta sökresultat.
// 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(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.
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
Kommentarer
Med den index här metoden kan du fastställa radnumret baserat på det teckenindex som anges i metodens parameter. Den första textraden i kontrollen returnerar värdet noll. Metoden GetLineFromCharIndex returnerar det fysiska radnumret där det indexerade tecknet finns i kontrollen. Om till exempel en del av den första logiska textraden i kontrollen omsluts till nästa rad GetLineFromCharIndex returnerar metoden 1 om tecknet vid det angivna teckenindexet har omslutit till den andra fysiska raden. Om WordWrap är inställt på false, radbryts ingen del av raden till nästa och metoden returnerar 0 för det angivna teckenindexet. Du kan använda den här metoden för att avgöra vilken rad ett specifikt teckenindex finns inom. När du till exempel har anropat Find metoden för att söka efter text kan du hämta teckenindexet till platsen där sökresultaten hittas. Du kan anropa den här metoden med det teckenindex som returneras av Find metoden för att avgöra vilken rad ordet hittades på.
I vissa fall GetLineFromCharIndex utlöser inte ett undantag när parametern index är ett ogiltigt värde. Ett exempel:
Om parametern
indexär MinValue eller -1 GetLineFromCharIndex returnerar 0.Om parametern
indexär textlängden eller MaxValuereturnerar GetLineFromCharIndex returnerar talet för den sista textraden, vilket inte nödvändigtvis är samma somLines.Length-1, beroende på värdet för WordWrap egenskapen.
I dessa fall verifierar du indata innan du anropar GetLineFromCharIndex.
Note
Om det teckenindex som anges i parametern index ligger utanför det tillgängliga antalet rader som finns i kontrollen returneras det sista radnumret.