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
的按鈕,以及名為 TextBox1
Button1
和 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 字元索引呼叫這個方法,以判斷找到單字的行。
在某些情況下,當參數是不正確值時 index
, GetLineFromCharIndex 不會擲回例外狀況。 例如:
index
如果 參數為 MinValue 或 -1,則 GetLineFromCharIndex 傳回 0。index
如果 參數是文字長度或 MaxValue , GetLineFromCharIndex 則會傳回最後一行文字的數目,這不一定與Lines.Length-1
相同,視 屬性的值 WordWrap 而定。
在這些情況下,請先驗證輸入再呼叫 GetLineFromCharIndex 。
注意
如果 參數中指定的 index
字元索引超出 控制項中包含的可用行數,則會傳回最後一行號。