我认为这是一个愚蠢的问题,但我不明白这里发生了什么。
我使用此代码:
private void pictureBox1_MouseHover(object sender, EventArgs e)
{
pictureBox1.Visible = false;
pictureBox1.BackColor = Color.Black;
}
private void pictureBox1_MouseLeave(object sender, EventArgs e)
{
pictureBox1.Visible = true;
}
问题是:如果鼠标在图片框上方,图片框会将颜色更改为黑色,但可见性不会改变。为什么呢?
答案 0 :(得分:1)
您可以使用MouseEnter
事件而不是MouseHover
和bool字段isHover
来尝试减少闪烁:
public partial class Form1: Form
{
bool isHover = false;
private void pictureBox1_MouseEnter(object sender, EventArgs e)
{
if(isHover) return;
// with MouseHover this control visibility appears to be locked with MouseEnter it is not
pictureBox2.Visible = false;
pictureBox2.BackColor = Color.Black;
}
private void pictureBox1_MouseLeave(object sender, EventArgs e)
{
if(!isHover) return;
isHover = false;
pictureBox2.Visible = true;
}
...
}
答案 1 :(得分:1)
我认为你的问题是,只要你徘徊在图片上它就会消失(这就是为什么你看到背面颜色变成黑色,事件发生了)。然而,图片消失,导致鼠标不在图片上的情况,因此Mouse_Leave事件被触发。