This documentation is archived and is not being maintained.

ContextNode.SetStrokes Method

Sets the specified strokes on a ContextNode object.

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

public void SetStrokes (
	Strokes strokes
public void SetStrokes (
	Strokes strokes
public function SetStrokes (
	strokes : Strokes
Not applicable.



The Strokes that ContextNode object acquires.

This method does not update the DirtyRegion.

If any of the specified strokes in the stroke collection are already set on the InkAnalyzer, an ArgumentExceptionArgumentException is thrown.

The following example is a method called PopulateNode, from sample code that uses a System.Windows.Forms.TreeViewSystem.Windows.Forms.TreeView as a document model to show how data proxy can be used to store and load a context node tree for an InkAnalyzer. The DocumentNodeData class stores the ContextNode data in the document model when the Tag property of each TreeNodeTreeNode object is set to a DocumentNodeData object.

The PopulateNode method fully populates a ContextNode object by adding strokes, property data, annotation type, child nodes, and links from an InkAnalyzer object. It uses SetStrokes to add the strokes. The data comes from the DocumentNodeData object that is obtained from the corresponding TreeNodeTreeNode.

  • this[analyzerNode.Id] is an indexer on the document model class that maps a GuidGuid to a TreeNodeTreeNode. (Me(analyzerNode.Id) in VB.NET)

  • AddLinksToAnalyer is a method on the document model class that adds links to the ContextNode.

After the node is fully populated, the PartiallyPopulated property is set to false.

void IDocumentModel.PopulateNode(
    Microsoft.Ink.ContextNode analyzerNode,
    Microsoft.Ink.InkAnalyzer theInkAnalyzer)
        "IDocumentModel.PopulateNode: populate {0} {1}.",

    // Get the document node associated with the analyzer node.
    TreeNode documentNode = this[analyzerNode.Id];
    if (null == documentNode)
        throw new ApplicationException(
            "The requested node does not exist in the document model.");

    // Get the data associated with the node.
    DocumentNodeData nodeData = documentNode.Tag as DocumentNodeData;

    // Copy any application specific data associated with the node to the
    // partially populated ContextNode.
    foreach (Guid identifier in nodeData.GetPropertyDataIds())
            identifier, nodeData.GetPropertyData(identifier));

    // Check if the partially populated ContextNode is an ink leaf node.
    if (nodeData.IsInkLeafNode)
        // Add the strokes to the context node.
        // Add each child subnode as a partially populated ContextNode.
        foreach (TreeNode documentSubNode in documentNode.Nodes)
            // Get the DocumentNode data for the 
            DocumentNodeData subNodeData = documentSubNode.Tag as DocumentNodeData;

            if (analyzerNode.SubNodes.IndexOf(nodeData.Id) != -1)
                    subNodeData.Type, subNodeData.Id, subNodeData.Location);

    // Add links to the ContextNode.
    this.AddLinksToAnalyzer(documentNode, analyzerNode, theInkAnalyzer);

    // Update the partially populated flag.
    analyzerNode.PartiallyPopulated = false;


Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0