我想创建一个轮盘赌游戏,我已经用轮盘赌桌的图像制作了PictureBox
。
我尝试在属性和代码中设置Visibility = False
:
pictureBox1.Visible = !pictureBox1.Visible;
但是当我点击隐藏的PictureBox
时,没有任何反应。
你知道如何让它发挥作用吗?
我希望通过点击它来使其看不见。
答案 0 :(得分:1)
一旦将Item的可见性设为false,就不能再单击它。您可以在窗体或容器级别处理click事件,检查鼠标坐标是否包含在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;
}
}
}
}
答案 1 :(得分:1)
你的逻辑问题是,一旦PictureBox
变得不可见,你再也不能再点击它,因为它不再在表格上,而你可以肯定点击它留下的空白区域,你“仍然没有点击它。
一种可能性是,而不是使可见/不可见,放置/删除其背景图片,所以它似乎已经消失但实际上它仍然存在,仍然能够接收点击并响应事件。
答案 2 :(得分:0)
如果你想让pictureBox1不可见,你可以写pictureBox1.Visible = false;
编辑:你在做什么应该工作。我创建了一个winform并在其中放了一个图片框。我双击图片框以生成Click事件处理程序并键入pictureBox1.Visible = !pictureBox1.Visible;
。当我调试程序并单击图片框时,它变为不可见。我想不出为什么它不适合你。
编辑:我明白你现在想要什么。当它不可见时,在点击它时可以看到它。不幸的是我不知道该怎么做。
答案 3 :(得分:0)
一种可能愚蠢而又简单的方法可能是将一个图片框放在另一个上面。 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;
}
答案 4 :(得分:0)
您可以将每个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;
}