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.
FlowDocument veya TextBlockiçindeki bir 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 örnekte, belirtilen metin kapsayıcısında ilk Run öğesinin hemen içinde bir konum bulmak için TextPointer nasıl kullanılacağı gösterilmektedir.
// 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, TextPointer olanaklarını kullanarak 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
her zaman içerikte konumu gösterir. Bu tür konumlar içerikteki karakterler arasında veya içeriğin yapısını tanımlayan akış içerik öğesi etiketleri arasında yer alır. Geçerli Konum -
her zaman bir konumu gösterdiğinden ve bir aracılığıyla gerçekleştirilebilecek işlemlerin çoğu şu anda tarafından işaret edilen konuma göre olduğundan, tarafından gösterilen konuma geçerli konumu olarak 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çerikte bir şapka işaretinin konumlandırılabileceği herhangi bir yerdir. Ekleme konumu olmayan geçerli bir TextPointer konumuna örnek olarak, iki bitişik Paragraph etiketi (önceki paragrafın kapanış etiketi ile sonraki paragrafın açılış etiketi arasındaki) arasındaki konum verilebilir.
Sembol - Sembol içeren
işlemleri için, aşağıdakilerden herhangi biri sembolü olarak kabul edilir: bir TextElement öğesi için açma veya kapatma etiketi.
bir InlineUIContainer veya BlockUIContaineriçinde yer alan bir UIElement öğesi. Bu tür bir UIElement her zaman tam olarak bir simge olarak sayılır; UIElement içerdiği 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 en üst sınırı oluşturan öğedir; bir tarafından gösterilen konum her zaman bir metin kapsayıcısının içinde yer alır. Şu anda metin kapsayıcısı bir FlowDocument veya TextBlockolmalıdır. Genel olarak bakıldığında, farklı metin kapsayıcılarındaki TextPointer örnekleri arasındaki işlemler desteklenmez. Belge - Metin kapsayıcılarındaki içerik,
yönteminde ve ve özelliklerinde olduğu gibi belgesi olarak adlandırılır.
TextPointer sınıfı, Windows Presentation Foundation (WPF) akış içeriği öğeleri tarafından temsil edilen içeriğin çapraz geçişini ve işlemesini kolaylaştırmaya yöneliktir; genel olarak, bu tür öğeler TextElementtüretilir. TextPointer kolaylaştırıcı işlemlerden bazıları şunlardır:
Geçerli konumun sıralı karşılaştırmasını ikinci bir belirtilen konumla gerçekleştirin. CompareTo yöntemine bakın.
Belirtilen yönde geçerli konuma bitişik içerik türünü belirleyin. GetPointerContext yöntemine ve TextPointerContext numaralandırmaya bakın.
Kapsamı veya geçerli konuma bitişik olan TextElement alın. Bkz. Paragraph ve GetAdjacentElement yöntemi.
Geçerli belgenin kapsamını oluşturan metin kapsayıcısını alın. Parent özelliğine bakın.
Geçerli konumdan önce veya sonra belirtilen sayıda karakter alın. GetTextInRun yöntemine bakın.
Geçerli konuma bir karakter dizesi ekleyin. InsertTextInRun yöntemine bakın.
İçerikte satır sınırlarını bulma. GetLineStartPosition yöntemine ve IsAtLineStartPosition özelliğine bakın.
TextPointer konumlar ile sembol uzaklıkları arasında çeviri yapın. GetOffsetToPosition ve GetPositionAtOffset yöntemlerine bakın.
TextPointer konumu ile göreli koordinatları temsil eden bir Point arasında ç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. GetInsertionPosition ve GetNextInsertionPosition yöntemlerine ve IsAtInsertionPosition özelliğine bakın.
bir TextPointer nesnesi tarafından gösterilen konum ve LogicalDirection sabittir. İçerik düzenlendiğinde veya değiştirildiğinde, bir TextPointer tarafından gösterilen 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 karşılık gelen şekilde 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 genel oluşturucu sağlamaz. TextPointer örneği, diğer nesnelerin (diğer TextPointer nesneleri dahil) özellikleri veya yöntemleri kullanılarak oluşturulur. Aşağıdaki listede, TextPointeroluşturan ve döndüren yöntemlere ve özelliklere birkaç örnek verilmiştir. Bu liste kapsamlı değildir:
TextElement: ContentStart, ContentEnd, ElementStartve ElementEnd.
bir TextBlock (metin kapsayıcısından): ContentStart, ContentEndve GetPositionFromPoint.
FlowDocument (metin kapsayıcısından): ContentStartve ContentEnd
Mevcut bir TextPointer: DocumentStart, DocumentEnd, GetNextInsertionPositionve GetPositionAtOffset.
Özellikler
DocumentEnd |
Geçerli konumla ilişkilendirilmiş metin kapsayıcısında içeriğin sonunda bir TextPointer 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şkilendirilmiş metin kapsayıcısının geçerli (up-to-date) düzenine 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 tarafından belirtilen konumlar ile belirtilen ikinci bir TextPointerarası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 belirtilen mantıksal yönde sınırlayan öğesini döndürür. |
GetCharacterRect(LogicalDirection) |
Geçerli 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, Int32) |
Geçerli TextPointergöre belirtilen satırın başına bir TextPointer döndürür ve kaç satırın atlandığını bildirir. |
GetLineStartPosition(Int32) |
Geçerli TextPointergöre belirtilen satırın başına bir TextPointer döndürür. |
GetNextContextPosition(LogicalDirection) |
Belirtilen mantıksal yönde sonraki simgeye bir işaretçi döndürür. |
GetNextInsertionPosition(LogicalDirection) |
Belirtilen mantıksal yönde sonraki ekleme konumuna bir TextPointer döndürür. |
GetOffsetToPosition(TextPointer) |
Geçerli TextPointer ile belirtilen ikinci bir TextPointerarasındaki simgelerin sayısını döndürür. |
GetPointerContext(LogicalDirection) |
Belirtilen mantıksal yönde geçerli TextPointer bitişik içerik için bir kategori göstergesi döndürür. |
GetPositionAtOffset(Int32, LogicalDirection) |
Belirtilen uzaklık tarafından belirtilen konuma, geçerli TextPointer başından ve belirtilen yönde semboller halinde bir TextPointer döndürür. |
GetPositionAtOffset(Int32) |
Geçerli TextPointerbaşından itibaren belirtilen uzaklık tarafından belirtilen konuma, sembollerde bir TextPointer 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. |
GetTextInRun(LogicalDirection) |
Belirtilen mantıksal yönde geçerli TextPointer bitişik metin içeren bir dize döndürür. |
GetTextRunLength(LogicalDirection) |
Geçerli TextPointer ile bir sonraki metin olmayan simge arasındaki Unicode karakter sayısını belirtilen mantıksal yönde döndürür. |
GetType() |
Geçerli örneğin Type 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 metin Run ekler. |
IsInSameDocument(TextPointer) |
Belirtilen konumun geçerli konumla aynı metin kapsayıcısında olup olmadığını gösterir. |
MemberwiseClone() |
Geçerli Objectbasit 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. |