【问题标题】:How do I use a PictureBox as a Button如何将 PictureBox 用作按钮
【发布时间】:2014-01-21 20:50:51
【问题描述】:

我想创建一个轮盘游戏,我制作了一个带有轮盘赌桌图像的PictureBox

我尝试在属性和代码中设置Visibility = False

pictureBox1.Visible = !pictureBox1.Visible;

但是当我点击隐藏的PictureBox 时,什么都没有发生。

你知道如何让它工作吗?

我想通过点击让它变得可见而不可见。

【问题讨论】:

  • 那行代码的作用是什么??
  • 您是否将对象绑定到其点击事件?

标签: c# .net winforms button picturebox


【解决方案1】:

一旦您将项目的可见性设置为 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;
            }
        }
    }
}

【讨论】:

    【解决方案2】:

    您的逻辑问题是,一旦PictureBox 变得不可见,您就不能再单击它了,因为它不再在表单上,​​虽然您可以肯定地单击它留下的空白区域,但您是还是没有点击。

    一种可能性是放置/删除其背景图片,而不是使其可见/不可见,因此它似乎已经消失但实际上它仍然存在,仍然能够接收点击并响应事件。

    【讨论】:

      【解决方案3】:

      如果你想让pictureBox1不可见,你可以写pictureBox1.Visible = false;

      编辑:你正在做的应该工作。我创建了一个winform并在里面放了一个图片框。我双击图片框以创建 Click 事件处理程序并输入pictureBox1.Visible = !pictureBox1.Visible;。当我调试程序并单击图片框时,它变得不可见。我想不出为什么它不适合你。

      编辑:我明白你现在想要什么。当它不可见时,使其在单击时可见。不幸的是,我不知道该怎么做。

      【讨论】:

        【解决方案4】:

        一种可能很愚蠢但简单的方法可能是将一个图片框放在另一个之上。 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;
            }
        

        【讨论】:

          【解决方案5】:

          您可以将每个 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;
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-09-15
            • 1970-01-01
            • 2023-03-15
            • 2011-10-10
            • 2016-10-18
            • 2012-05-19
            • 2017-01-01
            • 1970-01-01
            相关资源
            最近更新 更多