由于某些原因,MouseHover和MouseLeave函数表现得非常奇怪。我需要做的就是,当光标在“按钮”上方时,我想让按钮可见,当光标离开按钮时,我想让它不可见。无论我尝试什么,我都无法使它发挥作用。当控件对象不可见时,似乎鼠标事件不起作用。
private void button1_MouseHover(object sender, EventArgs e)
{
button1.Visible = true;
}
private void button1_MouseLeave(object sender, EventArgs e)
{
button1.Visible = false;
}
答案 0 :(得分:7)
嗯......这就是它的运作方式。继续处理按钮的MouseLeave
事件,并为其父级处理MouseMove
(我假设表单):
private void Form_MouseMove(object sender, MouseEventArgs e) {
if (button1.Bounds.Contains(e.Location) && !button1.Visible) {
button1.Show();
}
}
答案 1 :(得分:1)
正如简短的评论所暗示的那样,鼠标无法识别隐形物体,因为它们“不存在”。
答案 2 :(得分:1)
将按钮放在Panel
上,其大小和位置确切地包含按钮。然后在面板上挂钩MouseEnter
和MouseLeave
。显示/隐藏按钮;让面板始终可见,以便它可以获得鼠标事件。
答案 3 :(得分:0)
它是如何运作的;不可见的控件不响应鼠标事件。
如何重新考虑您的设计?一个看不见的控件,只有当鼠标滚过它时才出现,只是尖叫"难以使用"。我可以理解当悬停在父容器或控件上时出现的一些子控件,但不是一个单独的按钮,只有在运气之前才能看到它。您可以随时将按钮包装在另一个容器中并处理容器的鼠标事件。