0

私は比較的初心者です。私が抱えている問題は単純なものだと思いますが、解決策を見つけることができません。button1をクリックするとポップアップが開き、canvas1MouseDownイベントハンドラーcanvas1.MouseDown += (s1, e1) =>{...};に追加されます。ユーザーがポップアップを閉じたときにこれを削除したいと思います。コード全体は次のとおりです。

namespace MyfApplication1
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            int linesNumber = 0;

            Button button1 = new Button();
            button1.Content = "Draw";
            button1.HorizontalAlignment = HorizontalAlignment.Left;
            button1.VerticalAlignment = VerticalAlignment.Top;
            button1.Click += (s, e) =>
            {
                Popup popup = new Popup();
                popup.PlacementTarget = button1;
                popup.IsOpen = true;

                Button closePopupButton = new Button();
                closePopupButton.Content = "close";
                closePopupButton.Click += (s1, e1) =>
                {
                    popup.IsOpen = false;
                    // remove canvas1.MouseDown event handler here
                };
                popup.Child = closePopupButton;

                canvas1.MouseDown += (s1, e1) =>
                {
                    Point point = Mouse.GetPosition(canvas1);
                    Line line = new Line();
                    line.X2 = point.X; line.Y2 = point.Y;
                    line.Stroke = Brushes.Red; line.StrokeThickness = 1;
                    canvas1.Children.Add(line);
                    linesNumber++;
                };
            };
            grid1.Children.Add(button1);
        }
    }
}
4

1 に答える 1

4

イベントハンドラーを変数のどこかに保存します

MouseButtonEventHandler onMousedown = (o, args) => 
{ 
    ...
};

canvas1.MouseDown += onMouseDown;

その後、eventhandlerを再度削除できます。

canvas1.MouseDown -= onMouseDown;
于 2012-10-03T11:27:17.200 に答える