1

出于某种原因,MouseHover 和 MouseLeave 函数的行为非常奇怪。我需要做的就是,当光标在“按钮”上时,我想让按钮可见,当光标离开按钮时,我想让它不可见。无论我尝试什么,我都无法让它发挥作用。当控件对象不可见时,鼠标事件似乎不起作用。

private void button1_MouseHover(object sender, EventArgs e)
{
   button1.Visible = true;
}

private void button1_MouseLeave(object sender, EventArgs e)
{
    button1.Visible = false;
}
4

4 回答 4

8

嗯……就是这样。继续为它的父处理按钮的MouseLeave事件和句柄(我假设形式):MouseMove

private void Form_MouseMove(object sender, MouseEventArgs e) {
    if (button1.Bounds.Contains(e.Location) && !button1.Visible) {
        button1.Show();
    }
}
于 2011-06-28T22:02:31.163 回答
2

正如简洁的评论所暗示的那样,鼠标无法识别不可见的对象,因为它们“不存在”。

于 2011-06-28T22:03:59.667 回答
2

将按钮放在一个Panel大小和位置恰好包含按钮的位置上。MouseEnter然后挂MouseLeave在面板上。显示/隐藏按钮;让面板始终可见,以便它可以获取鼠标事件。

于 2011-06-28T22:05:45.120 回答
1

这就是它的工作原理;不可见的控件不响应鼠标事件。

重新考虑你的设计怎么样?仅当鼠标滚动到它上面时才会出现的不可见控件只会尖叫“难以使用”。我可以理解在将鼠标悬停在父容器或控件上时出现的一些子控件,但不是一个单独的按钮,直到纯粹靠运气才被发现。您总是可以将按钮包装在另一个容器中并处理容器的鼠标事件。

于 2011-06-28T22:07:13.073 回答