2011-04-19 148 views
0

我在我的解決方案中使用Inkcanvas。 所以我想用戶確認後刪除,這樣...Inkcanvas筆畫擦除事件

XAML:

<InkCanvas Grid.RowSpan="3" Name="ink" StrokeErasing="ink_StrokeErasing" /> 

C#:

private void ink_StrokeErasing(object sender, InkCanvasStrokeErasingEventArgs e) 
{ 
    if (MessageBox.Show("Delete this stroke?", "", MessageBoxButton.OKCancel) != MessageBoxResult.OK) 
    { 
     e.Cancel = true; 
    } 
} 

在那之後,我可以看到在MessageBox兩次:( 這個奇蹟是怎麼發生的,請讓我知道這件事

回答

1

我試圖重現這個錯誤並使用了ink.EditingMode = InkCanvasEditingMode.EraseByStroke;

這隻會觸發消息框一次。

當我使用ink.EditingMode = InkCanvasEditingMode.Select;並在選擇筆畫後按Delete鍵時,消息框不顯示。

然後我用ink.EditingMode = InkCanvasEditingMode.EraseByPoint;並且導致消息框出現多次,因爲它是爲你正在刪除的筆畫的每一個點觸發的。

0

謝謝emo。其實我用「InkCanvasEditingMode.EraseByStroke」,我必須使用這個值。 :( 無論如何,我想這個問題是鼠標焦點。我改變了這樣的代碼......

private void ink_StrokeErasing(object sender, InkCanvasStrokeErasingEventArgs e) 
{ 
    if (Mouse.LeftButton == MouseButtonState.Released) { e.Cancel = true; return; } 

    if (MessageBox.Show("Delete this stroke?", "", MessageBoxButton.OKCancel) != MessageBoxResult.OK) 
    { 
     e.Cancel = true; 
    } 
} 

它工作得很好:)我懷疑這是一個錯誤。