共用方式為


ContextNodeBase.Confirm 方法

設定確認類型,限制 InkAnalyzerBase 能夠變更的節點內容。

命名空間:  System.Windows.Ink.AnalysisCore
組件:  IACore (在 IACore.dll 中)

語法

'宣告
Public Sub Confirm ( _
    type As ConfirmationType _
)
'用途
Dim instance As ContextNodeBase
Dim type As ConfirmationType

instance.Confirm(type)
public void Confirm(
    ConfirmationType type
)
public:
void Confirm(
    ConfirmationType type
)
public void Confirm(
    ConfirmationType type
)
public function Confirm(
    type : ConfirmationType
)

參數

備註

使用 Confirm 讓使用者確認 InkAnalyzerBase 已正確分析筆劃。呼叫 Confirm 之後,InkAnalyzerBase 將不會在稍後分析時變更這些筆劃的 ContextNodeBase 物件。

例如,如果使用者書寫 "to" 這個字,然後應用程式呼叫 Analyze,則 InkAnalyzerBase 將會建立 InkWord 節點並且包含 "to" 這個值。如果使用者接著在 "to" 後面加入 "me" 做為一個字,而且應用程式再次呼叫 Analyze,則 InkAnalyzerBase 可能會建立一個 InkWord 節點並且包含 "tome" 這個值。不過,如果在第一次呼叫 Analyze 之後,應用程式針對具有 NodeTypeAndProperties 值的 "to" 在 InkWord 節點上呼叫 Confirm,則會發生不同的行為。當使用者加入 "me" 而且應用程式再次呼叫 Analyze 時,"to" 節點不會變更。InkAnalyzerBase 可能會辨識兩個 "to me" 的 InkWord 節點。

您只能確認 InkWordInkDrawing 型別的 ContextNodeBase 物件。如果您嘗試在不是分葉節點的節點上呼叫 Confirm,則會擲回 InvalidOperationException

如果您呼叫 InkAnalyzerBase.RemoveStroke,而移除的筆劃與確認的 ContextNodeBase 物件相關,則 ContextNodeBase 物件會自動設定為未確認。

如果 ContextNodeBase 已確認,則 SetStrokes、SetStrokeType 和 SetStrokesType 會擲回 InvalidOperationException。如果已確認來源或目的節點,則 ReparentStrokes 會擲回例外狀況。

範例

下列範例是 PaneltheNotesPanel 上 MouseUp 事件的事件處理常式,會透過名為 theInkCollector 的 InkCollector 收集筆墨。應用程式具有名為 confirmMode 的 Boolean 值,該值是由名為 confirmMenuItem 的 MenuItem 所設定。在「確認」模式中時,使用者按一下文字即可加以確認 (或在節點已確認時關閉確認)。這個範例會使用 HitTestFindNodesOfType 將放開滑鼠事件轉換成筆墨座標,以找出適當的節點。找到節點之後,就會呼叫 Confirm 以切換確認。最後,會使應用程式離開「確認」模式。

Private Sub theNotesPanel_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles theNotesPanel.MouseUp
    If Me.confirmMode = True Then
        ' Translate coordinates into ink dimensions
        Dim hitPoint As New Point(e.X, e.Y)
        Dim panelGraphics As Graphics = Me.theNotesPanel.CreateGraphics()
        Me.theInkCollector.Renderer.PixelToInkSpace(panelGraphics, hitPoint)
        panelGraphics.Dispose()

        ' Find the strokes that the user selected
        Dim selectedStrokes As Strokes = Me.theInkCollector.Ink.HitTest(hitPoint, 10)

        ' The integer array must be exactly the right size. Arrays
        ' begin at zero, so the upper bound is selectedStrokes.Count - 1.
        Dim selectedStrokeIds(selectedStrokes.Count - 1) As Integer

        For i As Integer = 0 To selectedStrokes.Count - 1
            selectedStrokeIds(i) = selectedStrokes(i).Id
        Next

        ' Find the ink word nodes that correspond to those strokes
        Dim selectedNodes As ContextNodeBaseCollection = _
            Me.theInkAnalyzerBase.FindNodesOfType(System.Windows.Ink.AnalysisCore.ContextNodeTypeBase.InkWord, _
            selectedStrokeIds)

        ' Toggle the confirmation type on these nodes
        Dim selectedNode As ContextNodeBase
        For Each selectedNode In selectedNodes
            If selectedNode.IsConfirmed( _
               Windows.Ink.AnalysisCore.ConfirmationType.NodeTypeAndProperties) Then
                selectedNode.Confirm(System.Windows.Ink.AnalysisCore.ConfirmationType.None)
            Else
                selectedNode.Confirm(System.Windows.Ink.AnalysisCore.ConfirmationType.NodeTypeAndProperties)
            End If
        Next selectedNode

        ' No longer in "confirm" mode
        Me.confirmMode = False
        Me.ConfirmMenuItem.Checked = False
        Me.theInkCollector.Enabled = True
    End If

End Sub
private void theNotesPanel_MouseUp(object sender, MouseEventArgs e)
{
    if (this.confirmMode)
    {
        // Translate coordinates into ink dimensions
        Point hitPoint = new Point(e.X, e.Y);
        Graphics panelGraphics = this.theNotesPanel.CreateGraphics();
        this.theInkCollector.Renderer.PixelToInkSpace(panelGraphics, ref hitPoint);
        panelGraphics.Dispose();

        // Find the strokes that the user selected
        Strokes selectedStrokes = this.theInkCollector.Ink.HitTest(hitPoint, 10);

        int[] selectedStrokeIds = new int[selectedStrokes.Count];

        for (int i = 0; i < selectedStrokes.Count; i++)
        {
            selectedStrokeIds[i] = selectedStrokes[i].Id;
        }

        // Find the ink word nodes that correspond to those strokes
        ContextNodeBaseCollection selectedNodes =
            this.theInkAnalyzerBase.FindNodesOfType(System.Windows.Ink.AnalysisCore.ContextNodeTypeBase.InkWord,
            selectedStrokeIds);

        // Toggle the confirmation type on these nodes
        foreach (ContextNodeBase selectedNode in selectedNodes)
        {
            if (selectedNode.IsConfirmed(
                System.Windows.Ink.AnalysisCore.ConfirmationType.NodeTypeAndProperties))
            {
                selectedNode.Confirm(System.Windows.Ink.AnalysisCore.ConfirmationType.None);
            }
            else
            {
                selectedNode.Confirm(System.Windows.Ink.AnalysisCore.ConfirmationType.NodeTypeAndProperties);
            }
        }

        // No longer in "confirm" mode
        this.confirmMode = false;
        this.confirmMenuItem.Checked = false;
            this.theInkCollector.Enabled = true;
    }

}

平台

Windows Vista, Windows XP SP2, Windows Server 2003

.NET Framework 和 .NET Compact Framework 並不支援各種平台的所有版本。如需支援平台版本的相關資訊,請參閱 .NET Framework 系統需求

版本資訊

.NET Framework

支援版本:3.0

請參閱

參考

ContextNodeBase 類別

ContextNodeBase 成員

System.Windows.Ink.AnalysisCore 命名空間