ContextNode.Confirm 方法
設定確認類型,藉此限制 InkAnalyzer 能夠變更的節點內容。
命名空間: System.Windows.Ink
組件: IAWinFX (在 IAWinFX.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
)
參數
- type
型別:System.Windows.Ink.ConfirmationType
套用至節點的 ConfirmationType。
備註
呼叫 Confirm 之後,在 InkAnalyzer 執行後續分析時,InkAnalyzer 將不會變更與這些筆劃相關聯的 ContextNode 物件。
例如,如果使用者書寫 "to" 這個字,然後應用程式呼叫 Analyze,則 InkAnalyzer 將會建立 InkWord 節點並且包含 "to" 這個值。如果使用者接著在 "to" 後面加入 "me" 做為一個單字,而且應用程式再次呼叫 Analyze,則 InkAnalyzer 可能會建立一個 InkWord 節點並且包含 "tome" 這個值。
不過,如果在第一次呼叫 Analyze 之後,應用程式在 NodeTypeAndProperties 具有 "to" 值的 InkWord 節點上呼叫 Confirm,則加入 "me" 不會變更節點。InkAnalyzer 可能會辨識兩個 "to me" 的 InkWord 節點。
您只能確認 InkWord 和 InkDrawing 型別的 ContextNode 物件。如果您嘗試在不是分葉節點的節點上呼叫 Confirm,則會擲回 InvalidOperationException。
如果您呼叫 InkAnalyzerRemoveStroke(Int32),而且移除的筆劃與經過確認的 ContextNode 物件相關,則 ContextNode 物件會自動設定為未確認。
如果 ContextNode 已經過確認,則 SetStrokes(array<Int32[]) 和 ReparentStroke(Int32, ContextNode) 會擲回 InvalidOperationException。如果來源或目的節點已經過確認,則 ReparentStroke(Int32, ContextNode) 會擲回例外狀況。
範例
下列範例允許使用者指出已經過正確分析的筆劃。這個範例是 InkCanvas (theInkCanvas) 上 PreviewMouseUp 事件的事件處理常式。選取 CheckBox (confirmMode) 時,使用者按一下文字即可加以確認 (或在節點已經過確認時關閉確認)。這個範例會使用 StrokeCollection.HitTest(Point) 和 FindNodesOfType 尋找適合的節點。找到節點之後,就會呼叫 Confirm 以切換確認。最後會重建 TreeView 顯示哪些節點已經過確認,並且會處理 PreviewMouseUp 事件。
Sub theInkCanvas_PreviewMouseDown(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs)
If Me.confirmMode.IsChecked Then
' Find the ink word nodes that correspond to those strokes
Dim position As Point = e.GetPosition(theInkCanvas)
Dim hitStrokes As StrokeCollection = theInkCanvas.Strokes.HitTest(position)
Dim selectedNodes As ContextNodeCollection = _
Me.theInkAnalyzer.FindNodesOfType(ContextNodeType.InkWord, _
hitStrokes)
' Toggle the confirmation type on these nodes
Dim selectedNode As ContextNode
For Each selectedNode In selectedNodes
If selectedNode.IsConfirmed(ConfirmationType.NodeTypeAndProperties) Then
selectedNode.Confirm(ConfirmationType.None)
Else
selectedNode.Confirm(ConfirmationType.NodeTypeAndProperties)
End If
Next selectedNode
' Rebuild the TreeView to show which context nodes are confirmed.
Me.BuildTree()
' Handle the MouseDown event to prevent the InkCanvas from
' selecting the stroke.
e.Handled = True
End If
End Sub 'theInkCanvas_PreviewMouseDown
void theInkCanvas_PreviewMouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
if ((bool)this.confirmMode.IsChecked)
{
// Find the ink word nodes that correspond to those strokes
Point position = e.GetPosition(theInkCanvas);
StrokeCollection hitStrokes = theInkCanvas.Strokes.HitTest(position);
ContextNodeCollection selectedNodes =
this.theInkAnalyzer.FindNodesOfType(ContextNodeType.InkWord,
hitStrokes);
// Toggle the confirmation type on these nodes
foreach (ContextNode selectedNode in selectedNodes)
{
if (selectedNode.IsConfirmed(ConfirmationType.NodeTypeAndProperties))
{
selectedNode.Confirm(ConfirmationType.None);
}
else
{
selectedNode.Confirm(ConfirmationType.NodeTypeAndProperties);
}
}
// Rebuild the TreeView to show which context nodes are confirmed.
this.BuildTree();
// Handle the MouseDown event to prevent the InkCanvas from
// selecting the stroke.
e.Handled = true;
}
}
平台
Windows Vista
.NET Framework 和 .NET Compact Framework 並不支援各種平台的所有版本。如需支援平台版本的相關資訊,請參閱 .NET Framework 系統需求。
版本資訊
.NET Framework
支援版本:3.0
請參閱
參考
ContextNodeIsNodeTypeAndPropertiesConfirmed()