TextPointer.GetInsertionPosition(LogicalDirection) メソッド

定義

指定した論理方向の最も近い挿入位置への TextPointer を返します。Returns a TextPointer to the closest insertion position in the specified logical direction.

public:
 System::Windows::Documents::TextPointer ^ GetInsertionPosition(System::Windows::Documents::LogicalDirection direction);
public System.Windows.Documents.TextPointer GetInsertionPosition (System.Windows.Documents.LogicalDirection direction);
member this.GetInsertionPosition : System.Windows.Documents.LogicalDirection -> System.Windows.Documents.TextPointer
Public Function GetInsertionPosition (direction As LogicalDirection) As TextPointer

パラメーター

direction
LogicalDirection

最も近い挿入位置を検索する論理方向を指定する LogicalDirection 値のいずれか。One of the LogicalDirection values that specifies the logical direction in which to search for the closest insertion position.

戻り値

指定した方向の最も近い挿入位置への TextPointerA TextPointer to the closest insertion position in the specified direction.

この例では、メソッドをGetInsertionPosition使用して、指定さTextElementれたが印刷可能なコンテンツを空であるかどうかを確認する方法を示します。This example shows how to use the GetInsertionPosition method to check whether a specified TextElement is empty of printable content.

// Tests to see if the specified TextElement is empty (has no printatble content).
bool IsElementEmpty(TextElement element)
{
    // Find starting and ending insertion positions in the element.
    // Inward-facing directions are used to make sure that insertion position
    // will be found correctly in case when the element may contain inline 
    // formatting elements (such as a Span or Run that contains Bold or Italic elements).
    TextPointer start = element.ContentStart.GetInsertionPosition(LogicalDirection.Forward);
    TextPointer end = element.ContentEnd.GetInsertionPosition(LogicalDirection.Backward);
     
    // The element has no printable content if its first and last insertion positions are equal.
    return start.CompareTo(end) == 0;

} // End IsEmptyElement method.
' Tests to see if the specified TextElement is empty (has no printatble content).
Private Function IsElementEmpty(ByVal element As TextElement) As Boolean
    ' Find starting and ending insertion positions in the element.
    ' Inward-facing directions are used to make sure that insertion position
    ' will be found correctly in case when the element may contain inline 
    ' formatting elements (such as a Span or Run that contains Bold or Italic elements).
    Dim start As TextPointer = element.ContentStart.GetInsertionPosition(LogicalDirection.Forward)
    Dim [end] As TextPointer = element.ContentEnd.GetInsertionPosition(LogicalDirection.Backward)

    ' The element has no printable content if its first and last insertion positions are equal.
    Return start.CompareTo([end]) = 0

End Function ' End IsEmptyElement method.

注釈

挿入位置は、関連付けられているコンテンツのセマンティックルールを破壊することなく、新しいコンテンツを追加できる位置です。An insertion position is a position where new content may be added without breaking any semantic rules for the associated content. 実際には、挿入位置は、キャレットが配置されているコンテンツ内の任意の場所にあります。In practice, an insertion position is anywhere in content where a caret may be positioned. 挿入位置ではないTextPointer有効な位置の例として、隣接Paragraphする2つのタグ (つまり、前の段落の終了タグと次の段落の開始タグの間) の位置があります。An example of a valid TextPointer position that is not an insertion position is the position between two adjacent Paragraph tags (that is, between the closing tag of the preceding paragraph and the opening tag of the next paragraph).

が既TextPointerに有効な挿入位置を指していても、空でない書式シーケンスの終了タグが指定された方向の位置に直接TextPointer続く場合、このメソッドによって返されたは挿入を指すように調整されます。書式指定シーケンスが終了した直後の位置。If the TextPointer already points to a valid insertion position, but the closing tag for a non-empty formatting sequence directly follows that position in the given direction, then the TextPointer returned by this method is adjusted to point to the insertion position just after the close of the formatting sequence. たとえば、マークアップシーケンス<Bold>a</Bold>bについて考えてみます。For example, consider the markup sequence <Bold>a</Bold>b. a 2 つの文字bの間には、終了Boldタグの前に2つ、終了Boldタグの直後に2つの挿入位置があることに注意してください。Note that there are two insertion positions between the letters a and b - one that precedes the closing Bold tag, and one directly following the closing Bold tag. GetInsertionPosition direction Bold TextPointer に対して、Forward文字aの直後と終了タグの直前の位置に対して呼び出され、がの場合、返されるはを指すように調整されます。TextPointerb終了Boldタグの後の文字の直前の位置。If GetInsertionPosition is called on a TextPointer to the position directly after the letter a and before of the closing Bold tag, and with a direction of Forward, the returned TextPointer is adjusted to point to the position just before the letter b, after the closing Bold tag. 逆の論理方向で作業するときに、書式設定タグを開く場合も同様の調整が行われます。A similar adjustment is made for opening formatting tags when working in the opposite logical direction. このメソッドは、同様のケースで挿入位置のあいまいさを解消する手段を提供することを目的としています。This method is intended to provide a means of disambiguation between insertion positions in similar cases.

このメソッドは、構造タグのシーケンスが関係している場合に、挿入ポイントを選択するためにも使用できます。This method can also be used to be selective about insertion points when a sequence of structural tags is involved. たとえば、段落の終了タグと開始タグの間の位置にある場合、direction パラメーターを使用して、次の段落の先頭 (を指定LogicalDirection.Forwardすることにより) または前の段落の末尾で最も近い挿入ポイントを選択できます (を指定LogicalDirection.Backwardします。For example, when at a position between closing and opening paragraph tags, the direction parameter can be used to select the closest insertion point at the beginning of the following paragraph (by specifying LogicalDirection.Forward) or at the end of the preceding paragraph (by specifying LogicalDirection.Backward).

ポインターが既に挿入位置にあり、指定さdirectionれたに隣接する書式設定タグが存在しない場合、返さTextPointerれたは呼び出しTextPointer元と同じ位置を指します。If the pointer is already at insertion position, and there are no adjacent formatting tags in the specified direction, the returned TextPointer points to the same position as the calling TextPointer.

が指すTextPointer位置を基準とした有効な挿入位置が存在しない可能性があります。It is possible that no valid insertion position exists relative to the position pointed to by a TextPointer. これは、参照されるコンテンツが、空のテーブルまたはリストのように構造的に不完全である場合に発生する可能性があります。This can happen if the referenced content is structurally incomplete, as in an empty table or list. このような場合、このメソッドは単TextPointerに、このメソッドの呼び出しTextPointer元と同じ位置にを返します。In such cases, this method simply returns a TextPointer to the same position as the TextPointer from which this method was called. このメソッドは常に有効TextPointerなを返します。This method always returns a valid TextPointer.

適用対象

こちらもご覧ください