TextPointer Osztály
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.
Egy vagy FlowDocumenttöbb pozíciót TextBlock jelöl.
public ref class TextPointer : System::Windows::Documents::ContentPosition
public class TextPointer : System.Windows.Documents.ContentPosition
type TextPointer = class
inherit ContentPosition
Public Class TextPointer
Inherits ContentPosition
- Öröklődés
Példák
Az alábbi példa bemutatja, TextPointer hogyan kereshet pozíciót egy adott szövegtároló első Run elemében.
// This method returns the position just inside of the first text Run (if any) in a
// specified text container.
TextPointer FindFirstRunInTextContainer(DependencyObject container)
{
TextPointer position = null;
if (container != null){
if (container is FlowDocument)
position = ((FlowDocument)container).ContentStart;
else if (container is TextBlock)
position = ((TextBlock)container).ContentStart;
else
return position;
}
// Traverse content in forward direction until the position is immediately after the opening
// tag of a Run element, or the end of content is encountered.
while (position != null)
{
// Is the current position just after an opening element tag?
if (position.GetPointerContext(LogicalDirection.Backward) == TextPointerContext.ElementStart)
{
// If so, is the tag a Run?
if (position.Parent is Run)
break;
}
// Not what we're looking for; on to the next position.
position = position.GetNextContextPosition(LogicalDirection.Forward);
}
// This will be either null if no Run is found, or a position just inside of the first Run element in the
// specifed text container. Because position is formed from ContentStart, it will have a logical direction
// of Backward.
return position;
}
' This method returns the position just inside of the first text Run (if any) in a
' specified text container.
Private Function FindFirstRunInTextContainer(ByVal container As DependencyObject) As TextPointer
Dim position As TextPointer = Nothing
If container IsNot Nothing Then
If TypeOf container Is FlowDocument Then
position = (CType(container, FlowDocument)).ContentStart
ElseIf TypeOf container Is TextBlock Then
position = (CType(container, TextBlock)).ContentStart
Else
Return position
End If
End If
' Traverse content in forward direction until the position is immediately after the opening
' tag of a Run element, or the end of content is encountered.
Do While position IsNot Nothing
' Is the current position just after an opening element tag?
If position.GetPointerContext(LogicalDirection.Backward) = TextPointerContext.ElementStart Then
' If so, is the tag a Run?
If TypeOf position.Parent Is Run Then
Exit Do
End If
End If
' Not what we're looking for on to the next position.
position = position.GetNextContextPosition(LogicalDirection.Forward)
Loop
' This will be either null if no Run is found, or a position just inside of the first Run element in the
' specifed text container. Because position is formed from ContentStart, it will have a logical direction
' of Backward.
Return position
End Function
Az alábbi példa egy egyszerű keresési algoritmust implementál a létesítmények használatával TextPointer .
// This method will search for a specified word (string) starting at a specified position.
TextPointer FindWordFromPosition(TextPointer position, string word)
{
while (position != null)
{
if (position.GetPointerContext(LogicalDirection.Forward) == TextPointerContext.Text)
{
string textRun = position.GetTextInRun(LogicalDirection.Forward);
// Find the starting index of any substring that matches "word".
int indexInRun = textRun.IndexOf(word);
if (indexInRun >= 0)
{
position = position.GetPositionAtOffset(indexInRun);
break;
}
}
else
{
position = position.GetNextContextPosition(LogicalDirection.Forward);
}
}
// position will be null if "word" is not found.
return position;
}
' This method will search for a specified word (string) starting at a specified position.
Private Function FindWordFromPosition(ByVal position As TextPointer, ByVal word As String) As TextPointer
Do While position IsNot Nothing
If position.GetPointerContext(LogicalDirection.Forward) = TextPointerContext.Text Then
Dim textRun As String = position.GetTextInRun(LogicalDirection.Forward)
' Find the starting index of any substring that matches "word".
Dim indexInRun As Integer = textRun.IndexOf(word)
If indexInRun >= 0 Then
position = position.GetPositionAtOffset(indexInRun)
Exit Do
End If
Else
position = position.GetNextContextPosition(LogicalDirection.Forward)
End If
Loop
' position will be null if "word" is not found.
Return position
End Function
Megjegyzések
Az TextPointer osztály a következő terminológiát mutatja be:
Pozíció – Eredendően a TextPointer tartalom egy pozíciójára mutat. Az ilyen pozíciók vagy a tartalom karakterei, vagy a tartalom struktúráját meghatározó folyamattartalom-elemek címkéi közé esnek.
Aktuális pozíció – Mivel a TextPointer pozíció mindig egy pozíciót jelöl, és mivel az a-on TextPointer keresztül végrehajtható műveletek nagy része a jelenlegi TextPointerpozícióhoz képest van, érdemes egyszerűen az aktuális TextPointerpozícióként megjelölt pozícióra hivatkozni.
Beszúrási pozíció – A beszúrási pozíció olyan pozíció, ahol a társított tartalom szemantikai szabályainak megszegése nélkül új tartalom adható hozzá. 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ó.
Szimbólum – Szimbólumokat tartalmazó műveletek esetén TextPointer az alábbiak bármelyike szimbólumnak minősül:
Elem nyitó vagy záró címkéje TextElement .
Egy UIElement vagy InlineUIContainertöbb elemet tartalmazó BlockUIContainer elem. Vegye figyelembe, hogy az UIElement ilyen elemeket mindig pontosan egy szimbólumnak számítják; a UIElement bennük található további tartalmak vagy elemek nem számítanak szimbólumnak.
Minden 16 bites Unicode-karakter egy szövegelemen Run belül.
Szövegtároló – A szövegtároló az az elem, amely a folyamatban lévő folyamattartalom végső szegélyét képezi; a mindig egy szövegtárolóban megadott TextPointer pozíció. A szövegtárolóknak jelenleg egy FlowDocument vagy egynek kell lenniük TextBlock. Általánosságban elmondható, hogy a különböző szövegtárolók példányai közötti TextPointer műveletek nem támogatottak.
Dokumentum – A szövegtároló tartalmát dokumentumnak nevezzük, ahogyan a metódusban és a IsInSameDocumentDocumentStartDocumentEnd tulajdonságokban is.
A TextPointer osztály célja, hogy megkönnyítse a Windows megjelenítési alaprendszer (WPF) adatfolyam-tartalomelemek által képviselt tartalom bejárását és kezelését; általában ezek az elemek TextElement származnak. Néhány olyan művelet, amely TextPointer megkönnyíti a következőket:
Végezze el az aktuális pozíció és egy második megadott pozíció sorrendi összehasonlítását. Tekintse meg a metódust CompareTo .
Határozza meg az aktuális pozícióval szomszédos tartalom típusát egy adott irányban. Tekintse meg a metódust és GetPointerContext az TextPointerContext enumerálást.
Kérje le a TextElement hatóköröket, vagy az aktuális pozícióval szomszédos. Lásd Paragraph és a GetAdjacentElement metódus.
Szerezze be az aktuális dokumentum hatókörébe tartozó szövegtárolót. Tekintse meg a tulajdonságot Parent .
Az aktuális pozíció előtt vagy után megadott számú karakter lekérése. Tekintse meg a metódust GetTextInRun .
Szúrjon be egy karaktersorozatot az aktuális pozícióba. Tekintse meg a metódust InsertTextInRun .
Vonalhatárok keresése a tartalomban. Tekintse meg a metódust és GetLineStartPosition a IsAtLineStartPosition tulajdonságot.
A pozíciók és szimbólumok közötti TextPointer eltolódások lefordítása tartalommá. Tekintse meg a módszereket és GetOffsetToPosition a GetPositionAtOffset módszereket.
Vizualizációs találatok tesztelése egy pozíció és egy TextPointerPoint relatív koordináták közötti fordítással.
Keresse meg a közeli beszúrási pozíciót, vagy ellenőrizze, hogy az aktuális pozíció beszúrási pozíció-e. Tekintse meg a GetInsertionPosition metódusokat és GetNextInsertionPosition a tulajdonságot IsAtInsertionPosition .
Az objektum pozíciója LogicalDirection és TextPointer jelzése nem módosítható. A tartalom szerkesztésekor vagy módosításakor a tartalom által TextPointer jelzett pozíció nem változik a környező szöveghez képest, hanem a tartalom elejéről származó pozíció eltolása a tartalom új relatív pozíciójának megfelelően van igazítva. Például az TextPointer adott bekezdés elején lévő pozíció továbbra is a bekezdés elejére mutat, még akkor is, ha a tartalmat beszúrják vagy törlik a bekezdés előtt vagy után.
Az TextPointer osztály nem biztosít nyilvános konstruktorokat. A példányok TextPointer létrehozása más objektumok (beleértve a többi TextPointer objektumot is) tulajdonságaival vagy metódusával történik. Az alábbi lista néhány példát mutat be azokra a metódusokra és tulajdonságokra, amelyek létrehoznak és visszaadnak egy TextPointer. Ez a lista nem teljes:
TextElementA: ContentStart, ContentEnd, ElementStartés ElementEnd.
TextBlock Egy (szöveges tárolóból): ContentStart, ContentEndés GetPositionFromPoint.
FlowDocument Egy (szöveges tárolóból): ContentStart, ésContentEnd
Meglévő TextPointer: DocumentStart, DocumentEnd, GetNextInsertionPositionés GetPositionAtOffset.
Tulajdonságok
| Name | Description |
|---|---|
| DocumentEnd |
TextPointer Lekéri az aktuális pozícióhoz társított szövegtároló tartalmát a tartalom végén. |
| DocumentStart |
TextPointer Lekéri a tartalom elejét az aktuális pozícióhoz társított szövegtárolóban. |
| HasValidLayout |
Olyan értéket kap, amely jelzi, hogy az aktuális pozícióhoz társított szövegtároló érvényes (up-to-date) elrendezéssel rendelkezik-e. |
| IsAtInsertionPosition |
Olyan értéket kap, amely jelzi, hogy az aktuális pozíció beszúrási pozíció-e. |
| IsAtLineStartPosition |
Olyan értéket kap, amely jelzi, hogy az aktuális pozíció egy sor elején van-e. |
| LogicalDirection |
Lekéri az aktuális pozícióhoz társított logikai irányt, amely az aktuális pozícióhoz társított tartalom egyértelműsítésére szolgál. |
| Paragraph |
Lekéri az aktuális pozícióra vonatkozó bekezdést, ha van ilyen. |
| Parent |
Lekéri az aktuális pozíciót hatókörbe helyező logikai szülőt. |
Metódusok
| Name | Description |
|---|---|
| CompareTo(TextPointer) |
Az aktuális TextPointer és a megadott másodperc által megadott pozíciók közötti sorszám-összehasonlítást hajtja végre TextPointer. |
| DeleteTextInRun(Int32) |
Törli a megadott számú karaktert az aktuális TextPointerpozícióból. |
| Equals(Object) |
Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal. (Öröklődés forrása Object) |
| GetAdjacentElement(LogicalDirection) |
A megadott logikai irányban határos TextPointer elemet adja vissza, ha van ilyen. |
| GetCharacterRect(LogicalDirection) |
Határolókeretet (Rect) ad vissza az aktuálisat TextPointer a megadott logikai irányban határoló tartalomhoz. |
| GetHashCode() |
Ez az alapértelmezett kivonatoló függvény. (Öröklődés forrása Object) |
| GetInsertionPosition(LogicalDirection) |
TextPointer A legközelebbi beszúrási pozíciót adja vissza a megadott logikai irányban. |
| GetLineStartPosition(Int32, Int32) |
Az aktuálishoz TextPointerképest megadott sor elejére ad vissza egy TextPointer értéket, és azt jelzi, hogy hány sort hagyott ki a program. |
| GetLineStartPosition(Int32) |
TextPointer Az aktuálishoz TextPointerviszonyítva megadott sor elejére ad vissza egy értéket. |
| GetNextContextPosition(LogicalDirection) |
A megadott logikai irányban a következő szimbólumra mutató mutatót ad vissza. |
| GetNextInsertionPosition(LogicalDirection) |
Visszaadja TextPointer a következő beszúrási pozíciót a megadott logikai irányban. |
| GetOffsetToPosition(TextPointer) |
Az aktuális TextPointer és a megadott TextPointermásodperc közötti szimbólumok számát adja vissza. |
| GetPointerContext(LogicalDirection) |
Egy kategóriajelzőt ad vissza az aktuális TextPointer mellett lévő tartalomhoz a megadott logikai irányban. |
| GetPositionAtOffset(Int32, LogicalDirection) |
TextPointer A megadott eltolás által jelzett pozícióra ad vissza egy értéket szimbólumokban, az áram TextPointer kezdetétől a megadott irányban. |
| GetPositionAtOffset(Int32) |
A megadott eltolás által jelzett pozícióra ad vissza egy TextPointer értéket szimbólumokban, az aktuális TextPointerkezdettől kezdve. |
| GetTextInRun(LogicalDirection, Char[], Int32, Int32) |
A megadott számú karaktert a megadott irányban lévő szomszédos szövegből másolja át egy hívó által megadott karaktertömbbe. |
| GetTextInRun(LogicalDirection) |
Visszaad egy sztringet, amely az aktuális TextPointer szöveggel szomszédos szöveget a megadott logikai irányban tartalmazza. |
| GetTextRunLength(LogicalDirection) |
Az aktuális TextPointer és a következő nem szöveges szimbólum közötti Unicode-karakterek számát adja vissza a megadott logikai irányban. |
| GetType() |
Lekéri az Type aktuális példányt. (Öröklődés forrása Object) |
| InsertLineBreak() |
Beszúr egy sortörést az aktuális pozícióba. |
| InsertParagraphBreak() |
Bekezdéstörés beszúrása az aktuális pozícióba. |
| InsertTextInRun(String) |
Beszúrja a megadott szöveget az aktuális pozícióban lévő szövegbe Run . |
| IsInSameDocument(TextPointer) |
Azt jelzi, hogy a megadott pozíció ugyanabban a szövegtárolóban van-e, mint az aktuális pozíció. |
| MemberwiseClone() |
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| ToString() |
Ez a típus vagy tag támogatja a Windows megjelenítési alaprendszer (WPF) infrastruktúrát, és nem közvetlenül a kódból való használatra szolgál. |