我想创建一个轮盘游戏,并且我制作了一个带有轮盘赌桌图像的
PictureBox
。
我尝试在属性和代码中设置
Visibility = False
:
pictureBox1.Visible = !pictureBox1.Visible;
但是当我点击隐藏的
PictureBox
时,什么也没有发生。
你知道如何让它发挥作用吗?
我想通过单击它使其从不可见变为可见。
一旦将项目的可见性设为 false,就无法再单击它。您可以在表单或容器级别处理单击事件,检查鼠标坐标是否包含在 PictureBox 的边界内,并使用它使其再次可见。
即
//Common eventhandler assigned to all of your PictureBox.Click Events
private void pictureBox_Click(object sender, EventArgs e)
{
((PictureBox)sender).Visible = false;
}
private void Form1_Click(object sender, EventArgs e)
{
foreach (var item in this.Controls) // or whatever your container control is
{
if(item is PictureBox)
{
PictureBox pb = (PictureBox)item;
if (pb.Bounds.Contains(PointToClient( MousePosition)))
{
pb.Visible = true;
}
}
}
}
你的逻辑问题是,一旦
PictureBox
变得不可见,你就不能再点击它了,因为它不再在表单上,虽然你肯定可以点击它留下的空白区域,但你仍然不能点击它。点击它。
一种可能是,不是使其可见/不可见,而是放置/删除其背景图片,因此它看起来已经消失,但实际上它仍然存在,仍然能够接收点击并响应事件。
如果你想让pictureBox1不可见,你可以写
pictureBox1.Visible = false;
编辑:你正在做的事情应该有效。我创建了一个winform并在里面放了一个图片框。我双击图片框来创建 Click 事件处理程序并输入
pictureBox1.Visible = !pictureBox1.Visible;
。当我调试程序并单击图片框时,它变得不可见。我想不出为什么它对你不起作用。
编辑:我明白你现在想要什么。当它不可见时,单击它即可使其可见。不幸的是我不知道该怎么做。
一种可能愚蠢但简单的方法可能是将一个图片框放在另一个图片框的上面。 pictureBox1 将是您的图片,pictureBox2 将没有图片。 然后你可以做这样的事情:
private void pictureBox1_Click(object sender, EventArgs e)
{
pictureBox1.Visible = false;
pictureBox2.Visible = true;
}
private void pictureBox2_Click(object sender, EventArgs e)
{
pictureBox1.Visible = true;
pictureBox2.Visible = false;
}
您可以将每个 PictureBox 控件放入 Panel 控件中。然后处理Panel和PictureBox的Click事件。
private void panel1_Click(object sender, EventArgs e)
{
pictureBox1.Visible = true;
}
private void pictureBox1_Click(object sender, EventArgs e)
{
pictureBox1.Visible = false;
}
picturebox1.visible = iif(picturebox1.visible=true,false,true)
点击可见,再次点击,不可见
谢谢