c#运行时网格边界防止鼠标事件处理

本文关键字:鼠标 事件处理 边界 运行时 网格 | 更新日期: 2023-09-27 17:53:44

我在运行时构建了一个画布,并为鼠标操作分配了事件处理程序,它运行得很好。然后我决定我想要一个边界围绕它,所以创建了一个边界,以防止处理程序工作。

我已经试过了:

    我已经注释掉了边框和拇指对象。画布绘制得很好,事件处理工作。
  • 然后,我从obj中删除了附加的事件处理程序,并将事件处理程序附加到边界事件,但事件仅在单击边界右时触发,而不是在边界内。
  • 我已经在画布和边框上尝试了预览和-预览事件。
  • 为两个元素附加事件处理程序

obj_MouseLeftButtonDown只是调用一个消息框,所以我可以测试一切。有人知道为什么我不能让事件在画布上触发吗?

if (sender is Canvas)
        {
            Canvas obj = new Canvas();
            obj.Name = "Container"+Objcount;
            obj.Height = 100;
            obj.Width = 100;
            obj.PreviewMouseLeftButtonDown += new MouseButtonEventHandler(obj_MouseLeftButtonDown);
            obj.PreviewMouseLeftButtonUp += new MouseButtonEventHandler(obj_MouseLeftButtonUp);
            obj.PreviewMouseMove += new MouseEventHandler(dragaround);
            Border Border1 = new Border();
            Border1.BorderThickness = new Thickness(5);
            Border1.BorderBrush = Brushes.Gray;
            Border1.Child = obj;
            desk.Children.Add(Border1);
            Thumb obj1 = new Thumb();
            obj1.Name = "Thumb" + Objcount;
            Canvas.SetRight(obj1, 0);
            Canvas.SetBottom(obj1, 0);
            obj1.DragDelta += new DragDeltaEventHandler(myThumb_DragDelta);
            obj.Children.Add(obj1);
            ++Objcount;
        }

c#运行时网格边界防止鼠标事件处理

这很奇怪。在尝试了各种各样的东西,注释掉代码,重新排列代码等之后,我关闭了电脑,出去玩了一天。当我回来重新启动它时,我设法使它工作了。我不知道怎么做,因为我回到了我发布的原始代码,我的鼠标事件正在点击。不确定是否有人曾经有过这种情况,但对于任何人在那里,正在经历这种事情只是尝试重新启动VS甚至你的电脑。我不知道怎么解释,但它现在起作用了。谢谢你Gleb Sevruk花时间提供一些额外的东西来尝试。