使用鼠标悬停使PictureBox可见/不可见
本文关键字:PictureBox 鼠标 悬停 可见 | 更新日期: 2023-09-27 18:06:18
我认为这是一个愚蠢的问题,但我不明白这里发生了什么。
我使用以下代码:
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;
}
问题是:如果鼠标在图片框上,图片框将颜色变为黑色,但可见性没有改变。为什么?
我认为你的问题是一旦你悬停的图片,它真的消失了(这就是为什么你看到的背面颜色变成黑色,事件正在发射)。然而,图片消失,导致你的鼠标不在图片上的情况,因此Mouse_Leave事件触发。
您可以使用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;
}
...
}