TextPatternRange.MoveEndpointByUnit Yöntem

Tanım

Metin aralığının bir uç noktasını belge aralığı içinde belirtilen sayıda TextUnittaşır.

public:
 int MoveEndpointByUnit(System::Windows::Automation::Text::TextPatternRangeEndpoint endpoint, System::Windows::Automation::Text::TextUnit unit, int count);
public int MoveEndpointByUnit (System.Windows.Automation.Text.TextPatternRangeEndpoint endpoint, System.Windows.Automation.Text.TextUnit unit, int count);
member this.MoveEndpointByUnit : System.Windows.Automation.Text.TextPatternRangeEndpoint * System.Windows.Automation.Text.TextUnit * int -> int
Public Function MoveEndpointByUnit (endpoint As TextPatternRangeEndpoint, unit As TextUnit, count As Integer) As Integer

Parametreler

endpoint
TextPatternRangeEndpoint

Taşınacak uç nokta.

unit
TextUnit

Taşıma için metin birimi.

count
Int32

Taşınacak birim sayısı. Pozitif bir sayı uç noktayı ileri taşır. Negatif bir sayı geriye doğru hareket eder. 0 sayısının hiçbir etkisi yoktur.

Döndürülenler

Gerçekte taşınan birim sayısı, uç nokta belgenin başına veya sonuna taşınırsa istenen sayıdan az olabilir.

Örnekler

private Int32 MoveEndpointByRangeFromSelection(AutomationElement target, Int32 units)
{
    // Specify the control type we're looking for, in this case 'Document'
    PropertyCondition cond = new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Document);

    // target --> The root AutomationElement.
    AutomationElement textProvider = target.FindFirst(TreeScope.Descendants, cond);

    TextPattern textpatternPattern = textProvider.GetCurrentPattern(TextPattern.Pattern) as TextPattern;

    if (textpatternPattern == null)
    {
        Console.WriteLine("Root element does not contain a descendant that supports TextPattern.");
        return 0;
    }
    TextPatternRange[] currentSelection = textpatternPattern.GetSelection();

    return currentSelection[0].MoveEndpointByUnit(
        TextPatternRangeEndpoint.Start, TextUnit.Paragraph, units);
}
Private Function MoveEndpointByRangeFromSelection(ByVal target As AutomationElement, ByVal units As Int32) As Int32
    ' Specify the control type we're looking for, in this case 'Document'
    Dim cond As PropertyCondition = New PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Document)

    ' target --> The root AutomationElement.
    Dim textProvider As AutomationElement = target.FindFirst(TreeScope.Descendants, cond)

    Dim textpatternPattern As TextPattern = CType(textProvider.GetCurrentPattern(TextPattern.Pattern), TextPattern)

    If (textpatternPattern Is Nothing) Then
        Console.WriteLine("Root element does not contain a descendant that supports TextPattern.")
        Return Nothing
    End If
    Dim currentSelection As TextPatternRange() = textpatternPattern.GetSelection()
    ' GetText(-1) retrieves all characters but can be inefficient
    Return currentSelection(0).MoveEndpointByUnit(TextPatternRangeEndpoint.Start, TextUnit.Paragraph, units)
End Function

Açıklamalar

Bir metin aralığının içeriğinde geçiş yapmak gerektiğinde, yöntemin başarıyla yürütülmesi için Move arka planda bir dizi adım uygulanır.

  1. Metin aralığı normalleştirilir; yani metin aralığı uç noktadaki bozuk bir aralığa Start daraltılır ve bu da uç noktayı gereksiz hale getirir End . Bu adım, bir metin aralığının sınırları aştığı unit durumlarda belirsizliği kaldırmak için gereklidir; örneğin, "{U}RL https://www.microsoft.com/ metne eklenmiş" ve burada "{" ve "}" metin aralığı uç noktalarıdır.

  2. Sonuçta elde edilen aralık, istenen unit sınırın başına geri DocumentRange taşınır.

  3. Ardından, uç nokta istenen unit bir sınıra taşınarak aralık bozuk aralık durumundan End genişletilir.

Move & ExpandToEnclosingUnit
Move() ve ExpandToEnclosingUnit() için metin aralığının nasıl ayarlandığına ilişkin örnekler

Bir metin kapsayıcısının metin içeriği (veya iç metni) ve köprü veya tablo hücresi gibi eklenmiş bir nesne, hem denetim görünümünde hem de UI Otomasyonu ağacının içerik görünümünde tek, sürekli metin akışı olarak gösterilir; nesne sınırları yoksayılır. bir UI Otomasyonu istemcisi metni bir şekilde yorumlamak, yorumlamak veya çözümlemek amacıyla alırsa, metin aralığı, metin içeriğine veya diğer eklenmiş nesnelere sahip bir tablo gibi özel durumlar için denetlenmelidir. Bu, her katıştırılmış nesne için bir AutomationElement almak üzere çağrılarak GetChildren ve ardından her öğe için bir metin aralığı elde etmek üzere çağrılarak RangeFromChild gerçekleştirilebilir; bu işlem tüm metin içeriği alınana kadar özyinelemeli olarak yapılır.

Eklenmiş nesneler tarafından yayılan metin aralıkları.
Eklenmiş nesneler ve bunların aralık aralıkları ile metin akışı örneği

MoveEndpointByUnitverilen denetim tarafından desteklenmiyorsa TextUnit sonraki en büyük TextUnit desteklenene saptırılır.

En küçük birimden en büyüğe sipariş aşağıda listelenmiştir.

Şunlara uygulanır