0

私は自分のソリューションで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回表示されます:(これはどうして起こったのだろうか。これについて教えてください。

4

2 に答える 2

1

このエラーを再現しようとして、ink.EditingMode = を使用しました。InkCanvasEditingMode.EraseByStroke;

これにより、メッセージ ボックスが 1 回だけトリガーされます。

ストロークを選択した後に削除を使用ink.EditingMode = InkCanvasEditingMode.Select;して押すと、メッセージボックスが表示されません。

次にink.EditingMode = InkCanvasEditingMode.EraseByPoint;、削除しているストロークのすべてのポイントに対してトリガーされるため、メッセージボックスが複数回表示されるようになりました。

于 2011-04-19T07:45:28.473 に答える
0

ありがとうエモ。実際には「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;
    }
}

それは正常に動作します:)これはバグだと思います。

于 2011-04-20T00:53:41.317 に答える