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
)
參數
- type
型別:System.Windows.Ink.AnalysisCore.ConfirmationType
套用至節點的 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 節點。
您只能確認 InkWord 和 InkDrawing 型別的 ContextNodeBase 物件。如果您嘗試在不是分葉節點的節點上呼叫 Confirm,則會擲回 InvalidOperationException。
如果您呼叫 InkAnalyzerBase.RemoveStroke,而移除的筆劃與確認的 ContextNodeBase 物件相關,則 ContextNodeBase 物件會自動設定為未確認。
如果 ContextNodeBase 已確認,則 SetStrokes、SetStrokeType 和 SetStrokesType 會擲回 InvalidOperationException。如果已確認來源或目的節點,則 ReparentStrokes 會擲回例外狀況。
範例
下列範例是 PaneltheNotesPanel 上 MouseUp 事件的事件處理常式,會透過名為 theInkCollector 的 InkCollector 收集筆墨。應用程式具有名為 confirmMode 的 Boolean 值,該值是由名為 confirmMenuItem 的 MenuItem 所設定。在「確認」模式中時,使用者按一下文字即可加以確認 (或在節點已確認時關閉確認)。這個範例會使用 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)
' 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