【问题标题】:Inkcanvas StrokeErasing eventInkcanvas StrokeErasing 事件
【发布时间】:2011-04-19 05:05:49
【问题描述】:

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

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

【问题讨论】:

    标签: wpf inkcanvas stroke


    【解决方案1】:

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

    这只会触发一次消息框。

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

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

    【讨论】:

      【解决方案2】:

      谢谢 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;
          }
      }
      

      它工作正常 :) 我怀疑这是一个错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-09
        • 1970-01-01
        • 2018-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-09
        相关资源
        最近更新 更多