AnalysisAlternate.AlternateNodes 属性

获取与此备选项关联的 ContextNode 对象。

命名空间:  Microsoft.Ink
程序集:  Microsoft.Ink.Analysis(在 Microsoft.Ink.Analysis.dll 中)

语法

声明
Public ReadOnly Property AlternateNodes As ContextNodeCollection
用法
Dim instance As AnalysisAlternate
Dim value As ContextNodeCollection

value = instance.AlternateNodes
public ContextNodeCollection AlternateNodes { get; }
public:
property ContextNodeCollection^ AlternateNodes {
    ContextNodeCollection^ get ();
}
/** @property */
public ContextNodeCollection get_AlternateNodes()
public function get AlternateNodes () : ContextNodeCollection

属性值

类型:Microsoft.Ink.ContextNodeCollection
与此备选项关联的 ContextNode 对象。

备注

因为这些 ContextNode 对象对应于备选项,所以除非这些对象是排在最前面的备选项(也就是 AnalysisAlternateCollection 中的第一个元素),否则它们不是 InkAnalyzerRootNode 的后代。

返回的节点是对应于备选项的叶节点。

AlternateNodes 始终返回叶节点的集合,也就是说,当对 LineNode 调用它时,该集合将包含 InkWordNode,而不是 LineNode

备注

此版本中的备选项节点具有等于 nullnull 引用(在 Visual Basic 中为 Nothing) 的 ParentNode 属性。

示例

此示例检查 AnalysisAlternate (selectedAlternate) 是否与 AnalysisAlternateCollection (currentAlternates) 中最佳备选项具有相同的分段。分段是指笔画划分为 ContextNode 对象的方式。

Dim hasSameSegmentationAsTop As Boolean = True
If currentAlternates.Count > 0 Then
    Dim topAlternate As AnalysisAlternate = currentAlternates(0)
    ' First check if selected alternate is the top alternate
    If selectedAlternate.Equals(topAlternate) Then
        hasSameSegmentationAsTop = True
    Else
        ' Check to see if they have the same strokes
        If topAlternate.AlternateNodes.Count <> selectedAlternate.AlternateNodes.Count Then
            hasSameSegmentationAsTop = False
        Else
            ' Check that each node matches the alternates
            Dim index As Integer
            For index = 0 To topAlternate.AlternateNodes.Count - 1

                If topAlternate.AlternateNodes(index).Strokes.Count <> _
                    selectedAlternate.AlternateNodes(index).Strokes.Count Then
                    hasSameSegmentationAsTop = False
                    Exit For
                End If

                Dim topStroke As Stroke
                For Each topStroke In topAlternate.AlternateNodes(index).Strokes
                    If (Not selectedAlternate.AlternateNodes(index).Strokes.Contains(topStroke)) Then
                        hasSameSegmentationAsTop = False
                        Exit For
                    End If
                Next topStroke

                If Not hasSameSegmentationAsTop Then
                    Exit For
                End If

            Next index
        End If
    End If
End If
                bool hasSameSegmentationAsTop = true;
                if (currentAlternates.Count > 0)
                {
                    AnalysisAlternate topAlternate = currentAlternates[0];
                    // First check if selected alternate is the top alternate
                    if (selectedAlternate == topAlternate)
                    {
                        hasSameSegmentationAsTop = true;
                    }
                    else
                    {
                        // Check to see if they have the same strokes
                        if (topAlternate.AlternateNodes.Count != selectedAlternate.AlternateNodes.Count)
                        {
                            hasSameSegmentationAsTop = false;
                        }
                        else
                        {
                            // Check that each node matches the alternates
                            for (int i = 0; 
                                (i < topAlternate.AlternateNodes.Count) && hasSameSegmentationAsTop; i++)
                            {
                                if (topAlternate.AlternateNodes[i].Strokes.Count !=
                                      selectedAlternate.AlternateNodes[i].Strokes.Count)
                                {
                                    hasSameSegmentationAsTop = false;
                                    break;
                                }

                                foreach (Stroke stroke in topAlternate.AlternateNodes[i].Strokes)
                                {
                                    if (!selectedAlternate.AlternateNodes[i].Strokes.Contains(stroke))
                                    {
                                        hasSameSegmentationAsTop = false;
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }

平台

Windows Vista

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求

版本信息

.NET Framework

受以下版本支持:3.0

另请参见

参考

AnalysisAlternate 类

AnalysisAlternate 成员

Microsoft.Ink 命名空间