Condividi tramite


Metodo ContextNodeBase.Confirm

Aggiornamento: novembre 2007

Imposta il tipo di conferma che limita ciò che InkAnalyzerBase può modificare relativamente al nodo.

Spazio dei nomi:  System.Windows.Ink.AnalysisCore
Assembly:  IACore (in IACore.dll)

Sintassi

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

Parametri

Note

Utilizzare Confirm per consentire all'utente finale di confermare che InkAnalyzerBase ha analizzato correttamente i tratti. Dopo avere chiamato Confirm, InkAnalyzerBase non modificherà gli oggetti ContextNodeBase per tali tratti durante le analisi successive.

Ad esempio, se l'utente finale scrive la parola "to" e l'applicazione chiama Analyze, InkAnalyzerBase creerà un nodo InkWord con valore "to". Se l'utente finale aggiunge "me" dopo "to" come una sola parola e l'applicazione esegue un'altra chiamata a Analyze, è probabile che InkAnalyzerBase crei un nodo InkWord con valore "tome". Tuttavia, se dopo la prima chiamata a Analyze, l'applicazione chiama Confirm nel nodo InkWord per "to" con valore NodeTypeAndProperties, si verifica un comportamento diverso. Se l'utente finale aggiunge "me" e l'applicazione esegue un'altra chiamata a Analyze, il nodo "to" non viene modificato. InkAnalyzerBase riconoscerebbe due nodi InkWord per "to me".

È possibile confermare solo gli oggetti ContextNodeBase di tipo InkWord e InkDrawing. Se si tenta di chiamare Confirm in un nodo che non è un nodo foglia, viene generata un'eccezione InvalidOperationException.

Se si chiama InkAnalyzerBase.RemoveStroke, l'oggetto ContextNodeBase viene automaticamente impostato su non confermato se il tratto da rimuovere è correlato a un oggetto ContextNodeBase confermato.

SetStrokes, SetStrokeType e SetStrokesType generano un'eccezione InvalidOperationException se l'oggetto ContextNodeBase è già confermato. ReparentStrokes genera l'eccezione se il nodo di origine o di destinazione è confermato.

Esempi

L'esempio seguente è un gestore dell'evento MouseUp in un oggetto Panel, theNotesPanel, che raccoglie l'input penna tramite un oggetto InkCollector denominato theInkCollector. L'applicazione presenta un valore Boolean denominato confirmMode, impostato da un oggetto MenuItem denominato confirmMenuItem. In modalità "di conferma", l'utente fa clic su una parola per confermarla (o per disattivare la conferma se il nodo è già confermato). Nell'esempio viene convertito l'evento di spostamento del mouse verso l'alto in coordinate di input penna, utilizzando HitTest e FindNodesOfType per trovare i nodi appropriati. Dopo avere trovato i nodi, viene chiamato Confirm per attivare o disattivare la conferma. Infine, viene disattivata la modalità "di conferma" dell'applicazione.

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

}

Piattaforme

Windows Vista, Windows XP SP2, Windows Server 2003

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Informazioni sulla versione

.NET Framework

Supportato in: 3.0

Vedere anche

Riferimenti

ContextNodeBase Classe

Membri ContextNodeBase

Spazio dei nomi System.Windows.Ink.AnalysisCore