ContextNode.CreatePartiallyPopulatedSubNode メソッド
Type、Id、および Location の情報のみが含まれている子 ContextNode オブジェクトを作成します。
名前空間 : Microsoft.Ink
アセンブリ : Microsoft.Ink.Analysis (Microsoft.Ink.Analysis.dll 内)
構文
'宣言
Public Function CreatePartiallyPopulatedSubNode ( _
type As Guid, _
nodeId As Guid, _
nodeLocation As AnalysisRegion _
) As ContextNode
'使用
Dim instance As ContextNode
Dim type As Guid
Dim nodeId As Guid
Dim nodeLocation As AnalysisRegion
Dim returnValue As ContextNode
returnValue = instance.CreatePartiallyPopulatedSubNode(type, _
nodeId, nodeLocation)
public ContextNode CreatePartiallyPopulatedSubNode(
Guid type,
Guid nodeId,
AnalysisRegion nodeLocation
)
public:
ContextNode^ CreatePartiallyPopulatedSubNode(
Guid type,
Guid nodeId,
AnalysisRegion^ nodeLocation
)
public ContextNode CreatePartiallyPopulatedSubNode(
Guid type,
Guid nodeId,
AnalysisRegion nodeLocation
)
public function CreatePartiallyPopulatedSubNode(
type : Guid,
nodeId : Guid,
nodeLocation : AnalysisRegion
) : ContextNode
パラメータ
- type
型 : System.Guid
作成する ContextNode オブジェクトの型。ContextNodeType クラスで定義されている GUID のいずれかを使用して、作成する型を指定します。
- nodeId
型 : System.Guid
新しいノードの識別子。
- nodeLocation
型 : Microsoft.Ink.AnalysisRegion
新しいノードの位置。
戻り値
型 : Microsoft.Ink.ContextNode
Type 、Id、および Location の情報のみが含まれている新しい ContextNode オブジェクト。この新しいノードは、ContextNode の子です。
解説
このメソッドは、ツリーに関するすべての情報が使用可能になる前に ContextNode オブジェクトをコンテキスト ノード ツリーで作成する方法としてデータ プロキシに使用します。他の情報を後で追加することもできます。
例
次の例では、System.Windows.Forms.TreeView をドキュメント モデルとして使用して、InkAnalyzer のコンテキスト ノード ツリーの格納と読み込みにデータ プロキシを使用する方法を示すサンプル コードから、CreatePartiallyPopulatedNode というメソッドを示します。各 TreeNode オブジェクトの Tag プロパティを DocumentNodeData オブジェクトに設定することで、DocumentNodeData クラスは、ContextNode データをドキュメント モデルに格納します。CreatePartiallyPopulatedNode メソッドは、TreeNode オブジェクトと InkAnalyzer オブジェクトを使用して、ドキュメント モデル内の TreeNode に対応する InkAnalyzer コンテキスト ノード ツリーに部分的に設定されたノードを作成します。このサンプルでは、すべてのノードが部分的に設定されたノードとして作成されます。これらのノードは、後ですべてのノード データを完全に設定するためにノードのキューに配置されます。
メソッドは最初に、渡された TreeNode オブジェクトの Tag プロパティからノード データを取得します。次に Id を使用して、このノードが現在コンテキスト ツリー ノードに存在しないことを確認します。また、ツリー ビューの親ノードを使用して、InkAnalyzer で対応する親ノードを見つけます。親ノードがコンテキスト ノード ツリーに存在しない場合、再帰を使用して親ノードを追加します。親ノードがツリーに存在する場合は、親ノードに対して部分的に設定する必要があります。親ノードが完全に設定されている場合、親ノードは既にすべてのサブノードを含むため、新しいサブノードを追加する必要はありません。したがって、PartiallyPopulated プロパティは、親ノードが部分的に設定されているかどうかを確認し、部分的に設定されている場合、親ノードは後で完全に設定するためにキューに追加されます。部分的に設定されていない場合は、例外がスローされます。最後に、親ノードで CreatePartiallyPopulatedSubNode が呼び出され、新しく作成されたノードが後で完全に設定するためにキューに追加されます。新しい ContextNode オブジェクトが返されます。データ プロキシの詳細については、「Data Proxy with Ink Analysis」を参照してください。
Private Function CreatePartiallyPopulatedNode(ByVal documentNode As TreeNode, _
ByVal theInkAnalyzer As Microsoft.Ink.InkAnalyzer) As Microsoft.Ink.ContextNode
Dim nodeData As DocumentNodeData = documentNode.Tag '
' Check that the node does not already exist in the InkAnalyzer.
If Nothing <> theInkAnalyzer.FindNode(nodeData.Id) Then
Throw New ApplicationException("The node already exists in the InkAnalyzer.")
End If
' Find the parent analyzer node.
Dim parentNodeData As DocumentNodeData = documentNode.Parent.Tag
Dim analyzerParentNode As Microsoft.Ink.ContextNode = _
theInkAnalyzer.FindNode(parentNodeData.Id)
If Nothing = analyzerParentNode Then
' The parent analyzer node does not exist yet. Create one.
analyzerParentNode = Me.CreatePartiallyPopulatedNode(documentNode.Parent, theInkAnalyzer)
ElseIf analyzerParentNode.PartiallyPopulated Then
' The parent analyzer node exists and is partially populated. Add it
' to the stack of nodes to fully populate.
Me.QueueNodeToPopulate(analyzerParentNode)
Else
' The parent analyzer node exists and is fully populated. This
' should not happen.
Throw New ApplicationException("The parent analyzer node is fully populated.")
End If
' Create the partially populated node under its parent analyzer node.
Dim analyzerNode As Microsoft.Ink.ContextNode = _
analyzerParentNode.CreatePartiallyPopulatedSubNode(nodeData.Type, _
nodeData.Id, nodeData.Location)
' Add the new node to the stack of nodes to fully populate.
Me.QueueNodeToPopulate(analyzerNode)
Return analyzerNode
End Function 'CreatePartiallyPopulatedNode
private Microsoft.Ink.ContextNode CreatePartiallyPopulatedNode(
TreeNode documentNode, Microsoft.Ink.InkAnalyzer theInkAnalyzer)
{
DocumentNodeData nodeData = documentNode.Tag as DocumentNodeData;
// Check that the node does not already exist in the InkAnalyzer.
if (null != theInkAnalyzer.FindNode(nodeData.Id))
{
throw new ApplicationException(
"The node already exists in the InkAnalyzer.");
}
// Find the parent analyzer node.
DocumentNodeData parentNodeData =
documentNode.Parent.Tag as DocumentNodeData;
Microsoft.Ink.ContextNode analyzerParentNode =
theInkAnalyzer.FindNode(parentNodeData.Id);
if (null == analyzerParentNode)
{
// The parent analyzer node does not exist yet. Create one.
analyzerParentNode =
this.CreatePartiallyPopulatedNode(
documentNode.Parent, theInkAnalyzer);
}
else if (analyzerParentNode.PartiallyPopulated)
{
// The parent analyzer node exists and is partially populated. Add it
// to the stack of nodes to fully populate.
this.QueueNodeToPopulate(analyzerParentNode);
}
else
{
// The parent analyzer node exists and is fully populated. This
// should not happen.
throw new ApplicationException(
"The parent analyzer node is fully populated.");
}
// Create the partially populated node under its parent analyzer node.
Microsoft.Ink.ContextNode analyzerNode =
analyzerParentNode.CreatePartiallyPopulatedSubNode(
nodeData.Type, nodeData.Id, nodeData.Location);
// Add the new node to the stack of nodes to fully populate.
this.QueueNodeToPopulate(analyzerNode);
return analyzerNode;
}
プラットフォーム
Windows Vista
.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。
バージョン情報
.NET Framework
サポート対象 : 3.0