次の方法で共有


RichTextBox.GetLineFromCharIndex メソッド

RichTextBox コントロールのテキスト内の指定した文字位置から行番号を取得します。

Public Function GetLineFromCharIndex( _
   ByVal index As Integer _) As Integer
[C#]
public int GetLineFromCharIndex(intindex);
[C++]
public: int GetLineFromCharIndex(intindex);
[JScript]
public function GetLineFromCharIndex(
   index : int) : int;

パラメータ

  • index
    検索する文字インデックスの位置。

戻り値

文字インデックスが含まれている行の 0 から始まる行番号。

解説

このメソッドを使用すると、その index パラメータに指定した文字インデックスを基に行番号を確認できます。コントロール内のテキストの最初の行は、値 0 を返します。 GetLineFromCharIndex メソッドは、コントロール内でインデックス付き文字が検索された物理的な行番号を返します。たとえば、コントロール内のテキストの最初の論理行の一部が次の行に折り返している場合、指定したインデックス位置にある文字が 2 番目の物理行に折り返していれば、 GetLineFromCharIndex メソッドは 1 を返します。 WordWrapfalse に設定されている場合は、行のどの部分も次行には折り返さず、このメソッドは指定した文字インデックスに対して 0 を返します。このメソッドを使用して、特定の文字インデックスが含まれている行を確認できます。たとえば、 Find メソッドを呼び出してテキストを検索し、文字が見つかった位置の文字インデックスを取得できます。 Find メソッドで返された文字インデックスを指定してこのメソッドを呼び出すと、文字がどの行で見つかったのかを確認できます。

メモ   index パラメータに指定した文字インデックスが、コントロール内に含まれている行数を超えた位置を示している場合は、最後の行番号が返されます。

使用例

[Visual Basic, C#] GetLineFromCharIndex メソッドの使用方法を示すコード例を次に示します。この例を実行するには、RichTextBox1 という名前の RichTextBox コントロール、Button1 という名前のボタン、および TextBox1 と TextBox2 という名前の 2 つのテキスト ボックスが配置されているフォームに、次のコードを貼り付けます。必ずすべてのイベントをイベント処理メソッドに関連付けるようにしてください。例を実行するときは、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.

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

[C#] 
// 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+" ";
        }
    }
}

[C++, JScript] C++ および JScript のサンプルはありません。Visual Basic および C# のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

RichTextBox クラス | RichTextBox メンバ | System.Windows.Forms 名前空間 | GetCharFromPosition | GetCharIndexFromPosition | GetPositionFromCharIndex