TextPointer.GetInsertionPosition(LogicalDirection) Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
TextPointer A legközelebbi beszúrási pozíciót adja vissza a megadott logikai irányban.
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
Paraméterek
- direction
- LogicalDirection
Az egyik LogicalDirection érték, amely meghatározza a legközelebbi beszúrási pozíció keresésének logikai irányát.
Válaszok
A TextPointer a legközelebbi beszúrási pozícióhoz a megadott irányban.
Példák
Ez a példa bemutatja, hogyan használható a GetInsertionPosition metódus annak ellenőrzésére, hogy egy megadott TextElement elem üres-e nyomtatható tartalomból.
// 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.
Megjegyzések
A beszúrási pozíció olyan pozíció, ahol új tartalom adható hozzá a társított tartalom szemantikai szabályainak megszegése nélkül. A gyakorlatban a beszúrási pozíció bárhol megtalálható a tartalomban, ahol egy ápoló elhelyezhető. Egy olyan érvényes TextPointer pozícióra példa, amely nem beszúrási pozíció, a két szomszédos Paragraph címke (azaz az előző bekezdés záró címkéje és a következő bekezdés nyitó címkéje) közötti pozíció.
Ha a TextPointer már érvényes beszúrási pozícióra mutat, de egy nem üres formázási sorozat záró címkéje közvetlenül az adott irányban követi ezt a pozíciót, akkor TextPointer a metódus által visszaadott értéket a rendszer úgy állítja be, hogy közvetlenül a formázási sorozat bezárása után mutasson a beszúrási pozícióra. Vegyük például a korrektúrasorozatot <Bold>a</Bold>b. Vegye figyelembe, hogy két beszúrási pozíció van a betűk a között, és b az egyik a záró Bold címkét megelőző, a másik pedig közvetlenül a záró Bold címkét követi. Ha GetInsertionPosition közvetlenül a levél TextPointer után és a záró címke előtt, illetve a következővel aBolddirectionkérik Forward fel a pozícióra, a visszaadott TextPointer érték úgy van beállítva, hogy közvetlenül a betű belőtti pozícióra mutasson a zárócímke Bold után. Hasonló módosítás történik a formázási címkék megnyitásához, ha az ellenkező logikai irányban dolgozik. Ez a módszer arra szolgál, hogy hasonló esetekben egyértelműsítést biztosítson a beszúrási pozíciók között.
Ez a módszer használható a beszúrási pontok szelektív meghatározására is, ha szerkezeti címkék sorozata van jelen. Ha például a záró és a nyitó bekezdéscímkék közötti pozícióban az irányparaméter a legközelebbi beszúrási pont kiválasztásához használható a következő bekezdés elején (a megadásával LogicalDirection.Forward) vagy az előző bekezdés végén (megadásával LogicalDirection.Backward).
Ha az egérmutató már beszúrási pozícióban van, és a megadott directionhelyen nincsenek szomszédos formázási címkék, a visszaadott TextPointer pontok a hívással TextPointermegegyező helyre mutatnak.
Lehetséges, hogy nincs érvényes beszúrási pozíció a TextPointer. Ez akkor fordulhat elő, ha a hivatkozott tartalom szerkezetileg hiányos, mint egy üres táblában vagy listában. Ilyen esetekben ez a módszer egyszerűen ugyanazt a pozíciót adja vissza TextPointer , mint ahonnan ezt a TextPointer metódust meghívták. Ez a metódus mindig érvényes TextPointerértéket ad vissza.