我在运行时构建了一个画布,并为鼠标操作分配了事件处理程序,它运行得很好。然后我决定我想要一个边界围绕它,所以创建了一个边界,以防止处理程序工作。
我已经试过了:
- 我已经注释掉了边框和拇指对象。画布绘制得很好,事件处理工作。
- 然后,我从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花时间提供一些额外的东西来尝试。