Inkcanvas StrokeErasing事件

时间:2011-04-19 05:05:50

标签: wpf inkcanvas stroke

我在我的解决方案中使用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;
    }
}

之后,我可以看到两次消息框,:( 这个奇迹是怎么发生的。请让我知道这个。

2 个答案:

答案 0 :(得分:1)

我尝试重现此错误并使用了ink.EditingMode = InkCanvasEditingMode.EraseByStroke;

这只会触发消息框一次。

当我使用ink.EditingMode = InkCanvasEditingMode.Select;并在选择笔划后按删除时,不显示消息框。

然后我使用了ink.EditingMode = InkCanvasEditingMode.EraseByPoint;,这导致消息框出现多次,因为它是为您要删除的笔划的每个点触发的。

答案 1 :(得分: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;
    }
}

一切正常:)我怀疑这是一个错误。