网格周围的C#运行时边框可防止鼠标事件处理

时间:2016-06-30 18:43:40

标签: c# mouseevent border

我在运行时构建了一个画布,并为鼠标操作分配了事件处理程序,并且运行良好。然后我决定要在它周围设置一个边框,这样就创建了一个边框,阻止了处理程序的工作。

我尝试过:

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

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

1 个答案:

答案 0 :(得分:1)

这很奇怪。在尝试各种各样的事情,评论代码,重新安排它等我关闭我的电脑,然后出去了一天。当我回来并再次解雇时,我设法让它发挥作用。我不知道如何,因为我回到我发布的原始代码,我的鼠标事件正在点击。不确定是否有其他任何人曾经有过这个,但对于那些正在经历这种事情的人只是尝试重启VS甚至你的电脑。我迷失了解释,但现在正在努力。谢谢你Gleb Sevruk提供了一些额外的尝试。