TextPointer Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
veya TextBlockiçindeki bir FlowDocument konumu temsil eder.
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
- Devralma
Örnekler
Aşağıdaki örnek, belirtilen bir metin kapsayıcısında ilk Run öğenin hemen içinde bir konum bulmak için öğesinin nasıl kullanılacağını TextPointer gösterir.
// 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
Aşağıdaki örnek, tesisleri kullanarak TextPointer basit bir bulma algoritması uygular.
// 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
Açıklamalar
TextPointer sınıfı aşağıdaki terminolojiyi tanıtır:
Konum - Doğal olarak, bir TextPointer her zaman içerikteki bir konuma işaret etmektedir. Bu tür konumlar içerikteki karakterler arasında veya içeriğin yapısını tanımlayan akış içeriği öğesi etiketleri arasında yer alır.
Geçerli Konum - a TextPointer her zaman bir konumu gösterdiğinden ve aracılığıyla TextPointer gerçekleştirilebilecek işlemlerin birçoğu şu anda tarafından TextPointerişaret edilen konuma göre olduğundan, geçerli konum olarak bir TextPointer tarafından belirtilen konuma başvurmak mantıklıdır.
Ekleme Konumu - Ekleme konumu , ilişkili içerik için herhangi bir semantik kuralı bozmadan yeni içeriğin eklenebileceği bir konumdur. Uygulamada ekleme konumu, içeriğin herhangi bir yerinde şapka işaretinin konumlandırıldığı yerdir. Ekleme konumu olmayan geçerli TextPointer bir konum örneği, bitişik Paragraph iki etiket (önceki paragrafın kapanış etiketi ile sonraki paragrafın açılış etiketi arasındaki) arasındaki konumdur.
Sembol - Sembol içeren işlemlerin TextPointer amaçları doğrultusunda, aşağıdakilerden herhangi biri simge olarak kabul edilir:
Bir öğe için TextElement açma veya kapatma etiketi.
veya UIElement BlockUIContaineriçinde bulunan bir InlineUIContainer öğe. Bu tür bir UIElement her zaman tam olarak bir simge olarak sayılır; tarafından UIElement kapsanan ek içerik veya öğeler simge olarak sayılmaz.
Bir metin Run öğesinin içindeki her 16 bit Unicode karakteri.
Metin Kapsayıcısı - Metin kapsayıcısı , eldeki akış içeriği için nihai kenarlık oluşturan öğedir; tarafından TextPointer belirtilen konum her zaman bir metin kapsayıcısının içinde yer alır. Şu anda bir metin kapsayıcısı veya FlowDocument TextBlockolmalıdır. Genel olarak, farklı metin kapsayıcılarındaki örnekler arasındaki TextPointer işlemler desteklenmez.
Belge - Metin kapsayıcısının içeriği, yönteminde ve DocumentStart özelliklerinde IsInSameDocument DocumentEnd olduğu gibi belge olarak adlandırılır.
TextPointer sınıfı, Windows Presentation Foundation (WPF) akış içeriği öğeleriyle temsil edilen içeriğin çapraz geçişini ve işlemesini kolaylaştırmaya yöneliktir; genel olarak, bu tür öğeler öğesinden TextElementtüretilir. Kolaylaştırıcı TextPointer işlemlerden bazıları şunlardır:
Geçerli konumun sıralı karşılaştırmasını belirtilen ikinci bir konumla gerçekleştirin. Yöntemine CompareTo bakın.
Belirtilen yönde geçerli konuma bitişik içerik türünü belirleyin. Yöntemine ve TextPointerContext numaralandırmaya GetPointerContext bakın.
TextElement Bu kapsamları alın veya geçerli konuma bitişiktir. ve yöntemine GetAdjacentElement bakınParagraph.
Geçerli belgenin kapsamını oluşturan metin kapsayıcısını alın. Özelliğine Parent bakın.
Geçerli konumdan önce veya sonra belirtilen sayıda karakter alır. Yöntemine GetTextInRun bakın.
Geçerli konuma bir karakter dizesi ekleyin. Yöntemine InsertTextInRun bakın.
İçerikte satır sınırlarını bulma. Yöntemine ve IsAtLineStartPosition özelliğine GetLineStartPosition bakın.
Konumlar ve simge uzaklıkları arasında TextPointer çeviri yapıp içeriğe dönüştürebilir. ve GetPositionAtOffset yöntemlerine GetOffsetToPosition bakın.
Konum ile Point göreli koordinatları temsil eden arasında TextPointer çeviri yaparak görsel isabet testi gerçekleştirin.
Yakındaki bir ekleme konumunu bulun veya geçerli konumun ekleme konumu olup olmadığını denetleyin. ve GetNextInsertionPosition yöntemlerine GetInsertionPosition ve özelliğine IsAtInsertionPosition bakın.
Bir nesne tarafından TextPointer gösterilen konum LogicalDirection sabittir. İçerik düzenlendiğinde veya değiştirildiğinde, bir TextPointer tarafından belirtilen konum çevresindeki metne göre değişmez; bunun yerine bu konumun içeriğin başından uzaklığı, içerikteki yeni göreli konumu yansıtacak şekilde buna karşılık olarak ayarlanır. Örneğin, belirli bir paragrafın başındaki konumu gösteren bir, TextPointer içerik paragrafın önüne veya arkasına eklendiğinde veya silindiğinde bile bu paragrafın başına işaret etmeye devam eder.
TextPointer sınıfı herhangi bir ortak oluşturucu sağlamaz. örneği TextPointer , diğer nesnelerin (diğer TextPointer nesneler dahil) özellikleri veya yöntemleri kullanılarak oluşturulur. Aşağıdaki listede, bir oluşturan ve döndüren yöntemlere ve özelliklere birkaç örnek verilmiştir TextPointer. Bu liste kapsamlı değildir:
Bir TextElement: ContentStart, ContentEnd, ElementStartve ElementEnd.
Bir TextBlock (metin kapsayıcısından): ContentStart, ContentEndve GetPositionFromPoint.
Bir FlowDocument (metin kapsayıcısından): ContentStart, ve ContentEnd
Var olan TextPointerbir kaynaktan: DocumentStart, DocumentEnd, GetNextInsertionPositionve GetPositionAtOffset.
Özellikler
DocumentEnd |
TextPointer Geçerli konumla ilişkili metin kapsayıcısında içeriğin sonunda bir alır. |
DocumentStart |
Geçerli konumla ilişkili metin kapsayıcısında içeriğin başında bir TextPointer alır. |
HasValidLayout |
Geçerli konumla ilişkili metin kapsayıcısının geçerli (güncel) bir düzene sahip olup olmadığını gösteren bir değer alır. |
IsAtInsertionPosition |
Geçerli konumun ekleme konumu olup olmadığını gösteren bir değer alır. |
IsAtLineStartPosition |
Geçerli konumun bir satırın başında olup olmadığını gösteren bir değer alır. |
LogicalDirection |
Geçerli konumla ilişkili içeriği belirsiz hale getirmek için kullanılan geçerli konumla ilişkili mantıksal yönü alır. |
Paragraph |
Varsa geçerli konumun kapsamını oluşturan paragrafı alır. |
Parent |
Geçerli konumun kapsamını oluşturan mantıksal üst öğeyi alır. |
Yöntemler
CompareTo(TextPointer) |
Geçerli TextPointer ile belirtilen ikinci TextPointerbir tarafından belirtilen konumlar arasında sıralı bir karşılaştırma gerçekleştirir. |
DeleteTextInRun(Int32) |
Belirtilen karakter sayısını geçerli TextPointertarafından belirtilen konumdan siler. |
Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
GetAdjacentElement(LogicalDirection) |
Varsa, geçerli TextPointer öğeyi belirtilen mantıksal yönde sınırlayan öğesini döndürür. |
GetCharacterRect(LogicalDirection) |
Geçerliyle TextPointer belirtilen mantıksal yönde sınırlayan içerik için bir sınırlayıcı kutu (Rect) döndürür. |
GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
GetInsertionPosition(LogicalDirection) |
Belirtilen mantıksal yöndeki en yakın ekleme konumuna bir TextPointer döndürür. |
GetLineStartPosition(Int32) |
TextPointer Geçerli TextPointerile ilgili olarak belirtilen satırın başına bir döndürür. |
GetLineStartPosition(Int32, Int32) |
TextPointer Geçerli TextPointeröğesine göre belirtilen satırın başına bir döndürür ve kaç satırın atlandığını bildirir. |
GetNextContextPosition(LogicalDirection) |
Belirtilen mantıksal yönde bir sonraki simgeye bir işaretçi döndürür. |
GetNextInsertionPosition(LogicalDirection) |
Belirtilen mantıksal yönde bir sonraki ekleme konumuna döndürür TextPointer . |
GetOffsetToPosition(TextPointer) |
Geçerli TextPointer ile belirtilen TextPointersaniye arasındaki sembol sayısını döndürür. |
GetPointerContext(LogicalDirection) |
Belirtilen mantıksal yöndeki geçerliye TextPointer bitişik içerik için bir kategori göstergesi döndürür. |
GetPositionAtOffset(Int32) |
Belirtilen uzaklık tarafından belirtilen konuma, sembollerde, geçerli TextPointeröğesinin başından itibaren bir TextPointer döndürür. |
GetPositionAtOffset(Int32, LogicalDirection) |
Belirtilen uzaklık tarafından belirtilen konuma, sembollerde, geçerlinin TextPointer başından ve belirtilen yönde bir TextPointer döndürür. |
GetTextInRun(LogicalDirection) |
Belirtilen mantıksal yöndeki geçerlinin TextPointer bitişiğindeki herhangi bir metni içeren bir dize döndürür. |
GetTextInRun(LogicalDirection, Char[], Int32, Int32) |
Belirtilen yöndeki herhangi bir bitişik metinden belirtilen en fazla karakter sayısını çağıran tarafından sağlanan karakter dizisine kopyalar. |
GetTextRunLength(LogicalDirection) |
Geçerli TextPointer ve sonraki metin olmayan simge arasındaki Unicode karakter sayısını belirtilen mantıksal yönde döndürür. |
GetType() |
Type Geçerli örneğini alır. (Devralındığı yer: Object) |
InsertLineBreak() |
Geçerli konuma satır sonu ekler. |
InsertParagraphBreak() |
Geçerli konuma paragraf sonu ekler. |
InsertTextInRun(String) |
Belirtilen metni geçerli konumdaki metne Run ekler. |
IsInSameDocument(TextPointer) |
Belirtilen konumun geçerli konumla aynı metin kapsayıcısında olup olmadığını gösterir. |
MemberwiseClone() |
Geçerli Objectöğesinin sığ bir kopyasını oluşturur. (Devralındığı yer: Object) |
ToString() |
Bu tür veya üye Windows Presentation Foundation (WPF) altyapısını destekler ve doğrudan kodunuzdan kullanılması amaçlanmamıştır. |