网格周围的C#运行时边界阻止鼠标事件处理

网格周围的C#运行时边界阻止鼠标事件处理,c#,mouseevent,border,C#,Mouseevent,Border,我在运行时构建了一个画布,并为鼠标操作分配了事件处理程序,效果很好。然后我决定要在它周围设置一个边界,这样就创建了一个边界来阻止处理程序工作 我所尝试的: 我已经注释掉了边框和拇指对象。画布绘制得很好,事件处理工作正常 然后,我从obj中删除了附加的事件处理程序,并将事件处理程序附加到边界事件,但只有在右键单击边界而不是在边界内部时,才会触发事件 我已经在画布和边框上尝试了预览和-预览事件 将事件处理程序附加到两个元素 obj_MouseLeftButtonDown只调用一个消息框,这样我就

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

我所尝试的:

  • 我已经注释掉了边框和拇指对象。画布绘制得很好,事件处理工作正常
  • 然后,我从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;
        }

这很奇怪。在尝试了各种各样的事情、注释代码、重新安排代码等之后,我关闭了电脑,出去玩了一天。当我回来再次点燃它时,我设法让它工作起来。我不知道怎么做,因为我回到了我发布的原始代码,我的鼠标事件正在点击。不确定是否有其他人曾经有过这种情况,但对于正在经历这种情况的人,请尝试重新启动VS或甚至您的计算机。我不知道该怎么解释,但它现在起作用了。感谢Gleb Sevruk花时间提供了一些额外的东西供您尝试。

也许现在您应该将事件处理程序附加到border和canvasI上。我知道我会遗漏一些东西!是的,我确实为这两个事件附加了处理程序,但都没有成功,但感谢您的建议。就好像边框由两个元素组成,一个透明的元素位于边框元素上。我会继续调查的,谢谢。试着把拇指放在桌子上。孩子们,不要放在画布上。如果其他一切都失败了,你可以一直在画布上手动绘制边框\矩形:是的,我会在回到电脑前尝试,谢谢Gleb Sevruk,但我对此不抱太大希望。因为桌子也是一块帆布。从本质上讲,桌面是一个画布,我把元素放在上面,还有一个元素我想成为一个可调节的画布。拇指允许这一点,它可以在没有边界的情况下工作。我想如果我把拇指放在桌子上,它会使桌子的画布可以调整,但我不知道,直到我尝试。一旦我尝试了需要将其添加到画布,然后将画布指定给边框,将更新。我也要试试这个。