我在我的解决方案中使用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;
}
}
之后,我可以看到两次消息框,:( 这个奇迹是怎么发生的。请让我知道这个。
答案 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;
}
}
一切正常:)我怀疑这是一个错误。