次の方法で共有


ContextNode.Confirm メソッド

ノードに変更を加えることができる InkAnalyzer を制限する確認の型を設定します。

名前空間 :  Microsoft.Ink
アセンブリ :  Microsoft.Ink.Analysis (Microsoft.Ink.Analysis.dll 内)

構文

'宣言
Public Sub Confirm ( _
    type As ConfirmationType _
)
'使用
Dim instance As ContextNode
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
)

パラメータ

解説

InkAnalyzer がストロークを正しく分析したことをエンド ユーザーが確認できるようにするには、Confirm を使用します。Confirm が呼び出されると、InkAnalyzer はそれ以降の分析時にそれらのストロークの ContextNode オブジェクトを変更しなくなります。

たとえば、エンド ユーザーが "to" という語を書き込んで、アプリケーションが Analyze を呼び出した場合、InkAnalyzer は値が "to" の InkWord ノードを作成します。次に、エンド ユーザーが "to" の後に "me" を 1 つの語として追加した場合、アプリケーションが Analyze をもう一度呼び出して、InkAnalyzer は値が "tome" の InkWord ノードを 1 つ作成します。ただし、Analyze の最初の呼び出しの後、アプリケーションが値 NodeTypeAndProperties が設定された "to" の InkWord ノードで Confirm を呼び出した場合、別の動作が行われます。エンド ユーザーが "me" を追加して、アプリケーションが Analyze をもう一度呼び出すと、"to" ノードは変更されません。InkAnalyzer は、"to me" の 2 つの InkWord ノードを認識します。

InkWord 型および InkDrawing 型の ContextNode オブジェクトのみ確認できます。リーフ ノードではないノードで Confirm を呼び出そうとした場合、InvalidOperationException がスローされます。

InkAnalyzer.RemoveStroke を呼び出すと、削除されるストロークが、確認済みの ContextNode オブジェクトに関連する場合は、ContextNode オブジェクトが自動的に未確認に設定されます。

ContextNode オブジェクトが既に確認済みの場合、SetStrokesInkAnalyzer.SetStrokesType、および InkAnalyzer.SetStrokeType は、InvalidOperationException をスローします。リンク元ノードまたはリンク先ノードのどちらかが確認済みの場合、ReparentStrokes は例外をスローします。

次の例では、InkCollector、theInkCollector を介してインクを収集する Panel、theNotesPanel の Control.MouseUp イベントのイベント ハンドラを示します。アプリケーションには、MenuItem、confirmMenuItem により Boolean、confirmMode が設定されています。"確認" モードの場合、ユーザーは単語をクリックして確認します (または、ノードが既に確認済みの場合は確認を無効にします)。次の例では、マウス アップ イベントをインク座標に変換し、HitTest および FindNodesOfType を使用して適切なノードを検索します。ノードが見つかったら、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)

        ' Find the ink word nodes that correspond to those strokes
        Dim selectedNodes As ContextNodeCollection = _
            Me.theInkAnalyzer.FindNodesOfType(Microsoft.Ink.ContextNodeType.InkWord, _
            selectedStrokes)

        ' Toggle the confirmation type on these nodes
        Dim selectedNode As ContextNode
        For Each selectedNode In selectedNodes
            If selectedNode.IsConfirmed(ConfirmationType.NodeTypeAndProperties) = True Then
                selectedNode.Confirm(Microsoft.Ink.ConfirmationType.None)
            Else
                selectedNode.Confirm(Microsoft.Ink.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);

        // Find the ink word nodes that correspond to those strokes
        ContextNodeCollection selectedNodes =
            this.theInkAnalyzer.FindNodesOfType(Microsoft.Ink.ContextNodeType.InkWord,
            selectedStrokes);

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

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

}

プラットフォーム

Windows Vista

.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。

バージョン情報

.NET Framework

サポート対象 : 3.0

参照

参照

ContextNode クラス

ContextNode メンバ

Microsoft.Ink 名前空間