网格周围的C#运行时边界阻止鼠标事件处理
我在运行时构建了一个画布,并为鼠标操作分配了事件处理程序,效果很好。然后我决定要在它周围设置一个边界,这样就创建了一个边界来阻止处理程序工作 我所尝试的:网格周围的C#运行时边界阻止鼠标事件处理,c#,mouseevent,border,C#,Mouseevent,Border,我在运行时构建了一个画布,并为鼠标操作分配了事件处理程序,效果很好。然后我决定要在它周围设置一个边界,这样就创建了一个边界来阻止处理程序工作 我所尝试的: 我已经注释掉了边框和拇指对象。画布绘制得很好,事件处理工作正常 然后,我从obj中删除了附加的事件处理程序,并将事件处理程序附加到边界事件,但只有在右键单击边界而不是在边界内部时,才会触发事件 我已经在画布和边框上尝试了预览和-预览事件 将事件处理程序附加到两个元素 obj_MouseLeftButtonDown只调用一个消息框,这样我就
- 我已经注释掉了边框和拇指对象。画布绘制得很好,事件处理工作正常
- 然后,我从obj中删除了附加的事件处理程序,并将事件处理程序附加到边界事件,但只有在右键单击边界而不是在边界内部时,才会触发事件
- 我已经在画布和边框上尝试了预览和-预览事件李>
- 将事件处理程序附加到两个元素
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,但我对此不抱太大希望。因为桌子也是一块帆布。从本质上讲,桌面是一个画布,我把元素放在上面,还有一个元素我想成为一个可调节的画布。拇指允许这一点,它可以在没有边界的情况下工作。我想如果我把拇指放在桌子上,它会使桌子的画布可以调整,但我不知道,直到我尝试。一旦我尝试了需要将其添加到画布,然后将画布指定给边框,将更新。我也要试试这个。