Share via


RootNode.GetNodesFromTextRange Method (Int32%, Int32%)

Returns a collection of descendant ContextNode objects that are relevant to the specified text range in the recognized string.

Namespace:  Microsoft.Ink
Assembly:  Microsoft.Ink.Analysis (in Microsoft.Ink.Analysis.dll)

Syntax

'Declaration
Public Function GetNodesFromTextRange ( _
    ByRef start As Integer, _
    ByRef length As Integer _
) As ContextNodeCollection
'Usage
Dim instance As RootNode 
Dim start As Integer 
Dim length As Integer 
Dim returnValue As ContextNodeCollection 

returnValue = instance.GetNodesFromTextRange(start, _
    length)
public ContextNodeCollection GetNodesFromTextRange(
    ref int start,
    ref int length
)
public:
ContextNodeCollection^ GetNodesFromTextRange(
    int% start, 
    int% length
)
public function GetNodesFromTextRange(
    start : int, 
    length : int
) : ContextNodeCollection

Parameters

  • start
    Type: System.Int32%

    The start of the text range in the recognized string.

  • length
    Type: System.Int32%

    The length of the text range in the recognized string.

Return Value

Type: Microsoft.Ink.ContextNodeCollection
The collection of descendant ContextNode objects that are relevant to the specified text range in the recognized string.

Remarks

The start and length parameters are references because their values can be changed. For example, the return value of GetRecognizedString is "I am late" and you pass in values of start = 6 and length = 1, corresponding to the letter "a." The ContextNodeCollection is then likely to have just one ContextNode, which is the InkWordNode that corresponds to the word "late." In this case, the value of start is changed to 5 and the value of length is changed to 4, corresponding to the entire word "late."

Examples

The following example takes a TextBox, theResultsTextBox, whose Text property has been set previously to the value returned by GetRecognizedString for the RootNode of an InkAnalyzer, theInkAnalyzer. The user has selected some text in the TextBox, and the example code takes the selection and marks the Strokes that corresponds to that selection.

Dim theRootNode As RootNode = DirectCast(theInkAnalyzer.RootNode, RootNode)
' Find out what's been selected in the text box 
Dim selStart As Integer = theResultsTextBox.SelectionStart
Dim selLength As Integer = theResultsTextBox.SelectionLength

' Return if no text is selected. 
' selLength must be > 0 or GetNodesFromTextRange(...)  
' will throw an ArgumentOutOfRangeException 
If 0 = selLength Then 
    Return 
End If 

' Get the nodes that correspond to that range 
Dim selectedSubNodes As ContextNodeCollection = theRootNode.GetNodesFromTextRange(selStart, selLength)

' Use the new start and length value to update the 
' selection in the TextBox
theResultsTextBox.SelectionStart = selStart
theResultsTextBox.SelectionLength = selLength

' First, set all strokes to black 
Dim inkStroke As Stroke
For Each inkStroke In theRootNode.Strokes
    inkStroke.DrawingAttributes = New DrawingAttributes(Color.Black)
Next inkStroke
' Next, set all selected sub nodes to red 
Dim node As ContextNode
For Each node In selectedSubNodes
    For Each inkStroke In node.Strokes
        inkStroke.DrawingAttributes = New DrawingAttributes(Color.Red)
    Next inkStroke
Next node
           RootNode theRootNode = (RootNode)theInkAnalyzer.RootNode;
            // Find out what's been selected in the text box 
            int selStart = theResultsTextBox.SelectionStart;
            int selLength = theResultsTextBox.SelectionLength;


            // Return if no text is selected. 
            // selLength must be > 0 or GetNodesFromTextRange(...)  
            // will throw an ArgumentOutOfRangeException 
            if (0 == selLength)
            {
                return;
            }

            // Get the nodes that correspond to that range
            ContextNodeCollection selectedSubNodes =
                    theRootNode.GetNodesFromTextRange(ref selStart, ref selLength);


            // Use the new start and length value to update the 
            // selection in the TextBox
            theResultsTextBox.SelectionStart = selStart;
            theResultsTextBox.SelectionLength = selLength;

            // First, set all strokes to black 
            foreach (Stroke stroke in theRootNode.Strokes)
                stroke.DrawingAttributes =
                            new DrawingAttributes(Color.Black);
            // Next, set all selected sub nodes to red 
            foreach (ContextNode node in selectedSubNodes)
            {
                foreach (Stroke stroke in node.Strokes)
                {
                    stroke.DrawingAttributes =
                            new DrawingAttributes(Color.Red);
                }
            }

Platforms

Windows 7, Windows Vista, Windows Server 2008 R2, Windows Server 2008

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Version Information

.NET Framework

Supported in: 3.0

See Also

Reference

RootNode Class

RootNode Members

GetNodesFromTextRange Overload

Microsoft.Ink Namespace