Freigeben über


ContextNodeBase.Confirm-Methode

Legt den Bestätigungstyp fest, der Einschränkungen darüber definiert, was der InkAnalyzerBase am Knoten ändern kann.

Namespace:  System.Windows.Ink.AnalysisCore
Assembly:  IACore (in IACore.dll)

Syntax

'Declaration
Public Sub Confirm ( _
    type As ConfirmationType _
)
'Usage
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
)

Parameter

Hinweise

Verwenden Sie Confirm, damit der Endbenutzer die korrekte Analyse der Striche durch den InkAnalyzerBase bestätigen kann. Nach dem Aufruf von Confirm nimmt der InkAnalyzerBase bei einer späteren Analyse keine Änderungen an den ContextNodeBase-Objekten für diese Striche vor.

Wenn der Endbenutzer beispielsweise das Wort "to" schreibt und Ihre Anwedung Analyze aufruft, erstellt der InkAnalyzerBase einen InkWord-Knoten mit dem Wert "to". Wenn der Endbenutzer dann "me" nach "to" in einem Wort anfügt und die Anwendung Analyze erneut aufruft, würde der InkAnalyzerBase wahrscheinlich einen InkWord-Knoten mit dem Wert "tome" erstellen. Wenn die Anwendung nach dem ersten Aufruf von Analyze jedoch Confirm am InkWord-Knoten für "to" mit dem Wert NodeTypeAndProperties aufruft, tritt ein anderes Verhalten auf. Wenn der Endbenutzer "me" hinzufügt und die Anwendung Analyze erneut aufruft, wird der "to"-Knoten nicht geändert. Der InkAnalyzerBase würde zwei InkWord-Knoten für "to me" erkennen.

Sie können nur ContextNodeBase-Objekte vom Typ InkWord und vom Typ InkDrawing bestätigen. Wenn Sie versuchen, Confirm auf einem Knoten aufzurufen, der kein Endknoten ist, wird eine InvalidOperationException ausgelöst.

Wenn Sie InkAnalyzerBase.RemoveStroke aufrufen, wird das ContextNodeBase-Objekt automatisch auf unbestätigt festgelegt, wenn sich der gelöschte Strich auf ein bestätigtes ContextNodeBase-Objekt bezieht.

SetStrokes, SetStrokeType und SetStrokesType lösen eine InvalidOperationException aus, wenn das ContextNodeBase-Objekt bereits bestätigt ist. ReparentStrokes löst die Ausnahme aus, wenn entweder der Quell- oder der Zielknoten bestätigt wurde.

Beispiele

Das folgende Beispiel ist ein Ereignishandler für das MouseUp-Ereignis auf einem Panel mit dem Namen theNotesPanel, das Freihandeingaben über einen InkCollector mit dem Namen theInkCollector erfasst. Die Anwendung verfügt über einen Boolean-Wert mit dem Namen confirmMode, der von einem MenuItem mit dem Namen confirmMenuItem festgelegt wird. Im "Bestätigungsmodus" klickt der Benutzer auf ein Wort, um es zu bestätigen (oder um die Bestätigung zu deaktivieren, wenn der Knoten bereits bestätigt wurde). Im Beispiel wird das beim Loslassen der Maustaste ausgelöste Ereignis in Freihandkoordinaten konvertiert. Außerdem werden HitTest und FindNodesOfType verwendet, um die entsprechenden Knoten zu suchen. Nachdem die Knoten gefunden wurden, wird Confirm aufgerufen, um die Bestätigung umzuschalten. Schließlich wechselt die Anwendung aus dem "Bestätigungsmodus".

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;
    }

}

Plattformen

Windows Vista, Windows XP SP2, Windows Server 2003

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Versionsinformationen

.NET Framework

Unterstützt in: 3.0

Siehe auch

Referenz

ContextNodeBase-Klasse

ContextNodeBase-Member

System.Windows.Ink.AnalysisCore-Namespace