親子のリレーションシップではない 2 つの 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 がインク分析に使用されると、ContextLink が WritingRegionNode と AnalysisHintNode の間に作成されます。SourceNode は AnalysisHintNode で、DestinationNode は WritingRegionNode です。
フローチャートが示すように、2 つの 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