RichTextBox.GetLineFromCharIndex(Int32) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
从 RichTextBox 控件文本内的指定字符位置检索行号。
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
参数
- index
- Int32
要搜索的字符索引位置。
返回
字符索引所在的从零开始的行号。
示例
下面的代码示例演示如何使用 GetLineFromCharIndex 方法。 若要运行该示例,请将以下代码粘贴到包含 RichTextBox 名为 的 RichTextBox1
控件的窗体中、名为 Button1
的按钮和两个名为 TextBox1
和 TextBox2
的文本框。 运行示例时,在 中 TextBox2
输入搜索字符串,然后单击按钮获取搜索结果。
// 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
注解
使用此方法可以根据方法的 参数中指定的 index
字符索引来确定行号。 控件中的第一行文本返回值零。 方法 GetLineFromCharIndex 返回控件中索引字符所在的物理行号。 例如,如果控件中第一个逻辑文本行的一部分换行到下一行, GetLineFromCharIndex 则如果指定字符索引处的字符已换行到第二个物理行,则该方法将返回 1。 如果 WordWrap 设置为 false
,则行中没有一部分换行到下一个,并且 该方法为指定的字符索引返回 0。 可以使用此方法来确定特定字符索引所在的行。 例如,调用 Find 方法搜索文本后,可以获取搜索结果所在的字符索引。 可以使用 方法返回 Find 的字符索引调用此方法,以确定找到单词的行。
在某些情况下, GetLineFromCharIndex 当 参数为无效值时 index
,不会引发异常。 例如:
index
如果参数为 MinValue 或 -1,GetLineFromCharIndex则返回 0。index
如果 参数是文本长度或 MaxValue,GetLineFromCharIndex则返回最后一行文本的编号,这不一定与Lines.Length-1
相同,具体取决于 属性的值WordWrap。
在这些情况下,请在调用 GetLineFromCharIndex之前验证输入。
注意
如果在 参数中指定的 index
字符索引超出控件中包含的可用行数,则返回最后一个行号。