鼠标悬停和鼠标离开在控件不可见时不起作用
本文关键字:鼠标 不起作用 控件 悬停 离开 | 更新日期: 2023-09-27 18:00:33
出于某种原因,鼠标悬停和MouseLeave函数的行为非常奇怪。我需要做的就是,当光标在"按钮"上时,我想使按钮可见,当光标离开按钮时,我想使其不可见。无论我尝试什么,我都无法让它工作。当控件对象不可见时,鼠标事件似乎不起作用。
private void button1_MouseHover(object sender, EventArgs e)
{
button1.Visible = true;
}
private void button1_MouseLeave(object sender, EventArgs e)
{
button1.Visible = false;
}
这就是它的工作原理。一种选择是继续以相同的方式处理按钮的MouseLeave
事件,并为其父级处理MouseMove
(我假设形式(:
private void Form_MouseMove(object sender, MouseEventArgs e) {
if (button1.Bounds.Contains(e.Location) && !button1.Visible) {
button1.Show();
}
}
将按钮放在大小和位置以正好包含按钮的Panel
上。然后钩MouseEnter
并MouseLeave
面板。显示/隐藏按钮;使面板始终可见,以便它可以获取鼠标事件。
正如简洁的评论所暗示的那样,鼠标无法识别不可见的对象,因为它们"不存在"。
这就是它的工作原理;不可见的控件不响应鼠标事件。
重新考虑您的设计怎么样? 一个不可见的控件,仅在鼠标滚动时出现,只是尖叫"难以使用"。 我可以理解将鼠标悬停在父容器或控件上时出现的一些子控件,但不能理解一个单独的按钮,在纯粹靠运气找到之前不可见。 您始终可以将按钮包装在另一个容器中并处理容器的鼠标事件。