面板事件在c#中不起作用

时间:2011-01-22 14:06:06

标签: c# winforms

大家好 我正在努力解决大学项目中的一些问题。 我正在c#中为我的大学c#课程中的一个项目构建一个“连续4次”游戏。

我创建了一个名为GameForm的Form,在其中我添加了一个名为panelBoardGame的Panel。 到那个panelBoardGame我添加了一个可点击的标签数组(执行一个移动),我也添加了一个标签矩阵,代表董事会本身。

现在,我的任务是每当鼠标位于Panel区域内时,某个玩家的CoinImage随着Cursor移动,只要它在面板区域内。当鼠标在区域外时,CoinImage不会显示。

为此,我尝试触发panelBoardGame的onMouseEnter,OnMouseLeave事件,但不知怎的,它们甚至都不会被执行。 每当我的鼠标在panelBoardGame区域内时,panelBoardGame_MouseMove(......)函数内的代码都不会被执行。

任何人都可以帮助我吗?

由于我是新手,我无法发布图片,但我已将图片上传到 Image of the Form

这是Form的图像,里面有一个黑色的边框是面板,面板里面我添加了标签

2 个答案:

答案 0 :(得分:2)

移动和悬停事件很可能会转到最顶层的控件(标签)。您的任何面板是否显示?

您可以在Panel的MouseEnter事件中捕获鼠标。

boardPanel.Capture = true;

但这可能会干扰标签中的鼠标处理。

总而言之,您可能会发现正确地获取此(UI)比看起来要难得多。考虑一个更简单的点击动作设计。首先。

答案 1 :(得分:1)

让我猜一下,你的标签完全覆盖了面板的区域。在Windows中,只有顶部控件接收鼠标事件。因此,当鼠标位于其中一个标签上时,鼠标事件将转到标签,而不是包含标签的面板。因此,在标签上设置一个MouseMove事件处理程序,您将看到执行。