次の方法で共有


TextPointer.GetTextInRun メソッド

定義

現在の TextPointerに隣接するテキストを返します。

オーバーロード

GetTextInRun(LogicalDirection)

指定した論理方向の現在の TextPointer に隣接する任意のテキストを含む文字列を返します。

GetTextInRun(LogicalDirection, Char[], Int32, Int32)

指定した方向の隣接するテキストから、指定した最大文字数を呼び出し元が指定した文字配列にコピーします。

GetTextInRun(LogicalDirection)

指定した論理方向の現在の TextPointer に隣接する任意のテキストを含む文字列を返します。

public:
 System::String ^ GetTextInRun(System::Windows::Documents::LogicalDirection direction);
public string GetTextInRun (System.Windows.Documents.LogicalDirection direction);
member this.GetTextInRun : System.Windows.Documents.LogicalDirection -> string
Public Function GetTextInRun (direction As LogicalDirection) As String

パラメーター

direction
LogicalDirection

隣接するテキストを検索して返す論理的な方向を指定する LogicalDirection 値の 1 つ。

戻り値

指定した論理方向の隣接するテキストを含む文字列。隣接するテキストが見つからない場合は Empty

次の例では、このメソッドの使用方法を示します。 この例では、GetTextInRun メソッドを使用して単純なテキスト抽出器を実装します。 このメソッドは、指定された 2 つの TextPointer インスタンス間のすべてのテキストの文字列連結を返します。

この例を使用して 2 つの TextPointer インスタンス間の任意のテキストを抽出できますが、これは説明のみを目的としており、実稼働コードでは使用しないでください。 代わりに、TextRange.Text プロパティを使用してください。

// Returns a string containing the text content between two specified TextPointers.
string GetTextBetweenTextPointers(TextPointer start, TextPointer end)
{
    StringBuilder buffer = new StringBuilder();
 
    while (start != null && start.CompareTo(end) < 0)
    {
        if (start.GetPointerContext(LogicalDirection.Forward) == TextPointerContext.Text)
            buffer.Append(start.GetTextInRun(LogicalDirection.Forward));
 
        // Note that when the TextPointer points into a text run, this skips over the entire
        // run, not just the current character in the run.
        start = start.GetNextContextPosition(LogicalDirection.Forward);
    }
    return buffer.ToString();
} // End GetTextBetweenPointers.
' Returns a string containing the text content between two specified TextPointers.
Private Function GetTextBetweenTextPointers(ByVal start As TextPointer, ByVal [end] As TextPointer) As String
    Dim buffer As New StringBuilder()

    Do While start IsNot Nothing AndAlso start.CompareTo([end]) < 0
        If start.GetPointerContext(LogicalDirection.Forward) = TextPointerContext.Text Then
            buffer.Append(start.GetTextInRun(LogicalDirection.Forward))
        End If

        ' Note that when the TextPointer points into a text run, this skips over the entire
        ' run, not just the current character in the run.
        start = start.GetNextContextPosition(LogicalDirection.Forward)
    Loop
    Return buffer.ToString()

End Function ' End GetTextBetweenPointers.

注釈

このメソッドは、テキストの中断のない実行のみを返します。 Text 以外のシンボルの種類が、指定した方向の現在の TextPointer に隣接している場合、何も返されません。 同様に、テキストは次の非テキスト記号までしか返されません。

こちらもご覧ください

適用対象

GetTextInRun(LogicalDirection, Char[], Int32, Int32)

指定した方向の隣接するテキストから、指定した最大文字数を呼び出し元が指定した文字配列にコピーします。

public:
 int GetTextInRun(System::Windows::Documents::LogicalDirection direction, cli::array <char> ^ textBuffer, int startIndex, int count);
public int GetTextInRun (System.Windows.Documents.LogicalDirection direction, char[] textBuffer, int startIndex, int count);
member this.GetTextInRun : System.Windows.Documents.LogicalDirection * char[] * int * int -> int
Public Function GetTextInRun (direction As LogicalDirection, textBuffer As Char(), startIndex As Integer, count As Integer) As Integer

パラメーター

direction
LogicalDirection

隣接するテキストを検索してコピーする論理的な方向を指定する LogicalDirection 値の 1 つ。

textBuffer
Char[]

任意のテキストがコピーされるバッファー。

startIndex
Int32

コピーしたテキストの書き込みを開始する textBuffer へのインデックス。

count
Int32

コピーする最大文字数。

戻り値

実際に textBufferにコピーされた文字数。

例外

startIndex が 0 未満か、textBufferLength プロパティより大きいです。

-又は-

count が 0 未満か、textBuffer (textBuffer.Length - startIndex) の残りの領域より大きい値です。

注釈

このメソッドは、テキストの中断のない実行のみを返します。 Text 以外のシンボルの種類が、指定した方向の現在の TextPointer に隣接している場合、何も返されません。 同様に、テキストは次の非テキスト記号までしか返されません。

こちらもご覧ください

適用対象