ContextLink 类
表示两个非父/子关系的 ContextNode 对象之间的关系。
命名空间: Microsoft.Ink
程序集: Microsoft.Ink.Analysis(在 Microsoft.Ink.Analysis.dll 中)
语法
声明
Public Class ContextLink
用法
Dim instance As ContextLink
public class ContextLink
public ref class ContextLink
public class ContextLink
public class ContextLink
备注
ContextLink 关系表示的关系示例包括:
由 InkDrawingNode 环绕的 ParagraphNode。创建一个 ContextLink 对象并将其添加到 ParagraphNode 和 InkDrawingNode 的 Links 属性。SourceNode 为 InkDrawingNode,DestinationNode 为 ParagraphNode。
AnalysisHintNode 和 WritingRegionNode。如果在墨迹分析中使用 AnalysisHintNode,则在 WritingRegionNode 和 AnalysisHintNode 之间创建 ContextLink。SourceNode 为 AnalysisHintNode,DestinationNode 为 WritingRegionNode。
中间绘有连线的两个 InkDrawingNode 对象,类似流程图中的连线方式。
若要确定 SourceNode 和 DestinationNode 之间的关系,可使用相应节点上的 InkDrawingNode.SemanticType 或 WritingRegionNode.SemanticType 属性。
示例
下面的示例查找链接到 ContextNode 节点 selectedNode 的所有节点。如果 selectedNode 不是目标节点,则将目标节点添加到 ArrayList (destinationNodes)。如果 selectedNode 不是源节点,则将该节点添加到 ArrayList (sourceNodes)。
Dim destinationNodes As ArrayList = New ArrayList()
Dim sourceNodes As ArrayList = New ArrayList()
' Find all the nodes that link to the currently selected node.
For Each link As Microsoft.Ink.ContextLink In selectedNode.Links
If link.DestinationNode <> selectedNode Then
destinationNodes.Add(link.DestinationNode)
End If
If link.SourceNode <> selectedNode Then
sourceNodes.Add(link.SourceNode)
End If
Next
ArrayList destinationNodes = new ArrayList();
ArrayList sourceNodes = new ArrayList();
// Find all the nodes that link to the currently selected node.
foreach (Microsoft.Ink.ContextLink link in selectedNode.Links)
{
if (link.DestinationNode != selectedNode)
{
destinationNodes.Add(link.DestinationNode);
}
if (link.SourceNode != selectedNode)
{
sourceNodes.Add(link.SourceNode);
}
}
下面的示例在某 InkAnalyzer (theInkAnalyzerWithHint) 的节点树中查找所有 WritingRegionNode 对象。然后,将链接到 Factoid 为“IS_DATE_FULLDATE”的 AnalysisHintNode 的对象放入一个 ContextNodeCollection (writingRegionsWithFactoids) 中。
Dim writingRegionsWithFactoids As _
New ContextNodeCollection(Me.theInkAnalyzerWithHint)
Dim allWritingRegions As ContextNodeCollection = _
Me.theInkAnalyzerWithHint.FindNodesOfType( _
Microsoft.Ink.ContextNodeType.WritingRegion)
Dim writingRegion As WritingRegionNode
For Each writingRegion In allWritingRegions
' See if they are linked to any factoid
Dim link As ContextLink
For Each link In writingRegion.Links
If link.SourceNode.Type = ContextNodeType.AnalysisHint Then
Dim hint As AnalysisHintNode = _
CType(link.SourceNode, AnalysisHintNode)
If hint.Factoid = "IS_DATE_FULLDATE" Then
writingRegionsWithFactoids.Add(writingRegion)
End If
End If
Next link
Next writingRegion
ContextNodeCollection writingRegionsWithFactoids =
new ContextNodeCollection(this.theInkAnalyzerWithHint);
ContextNodeCollection allWritingRegions =
this.theInkAnalyzerWithHint.FindNodesOfType(Microsoft.Ink.ContextNodeType.WritingRegion);
foreach (WritingRegionNode writingRegion in allWritingRegions)
{
// See if they are linked to any factoid
foreach (ContextLink link in writingRegion.Links)
{
if (link.SourceNode.Type == ContextNodeType.AnalysisHint)
{
AnalysisHintNode hint = (AnalysisHintNode) link.SourceNode;
if (hint.Factoid == "IS_DATE_FULLDATE")
{
writingRegionsWithFactoids.Add(writingRegion);
}
}
}
}
继承层次结构
System.Object
Microsoft.Ink.ContextLink
线程安全
此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。
平台
Windows Vista
.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。
版本信息
.NET Framework
受以下版本支持:3.0