【问题标题】:Change PictureBox image onClick [duplicate]更改 PictureBox 图像 onClick [重复]
【发布时间】:2015-01-18 00:59:29
【问题描述】:

我有 5 个图片框,我想在单击每个图片框时更改图像。 例如,如果pictureBox1上显示的图像是“_1”,当我单击它时,图像应该变为“_1x”,反之亦然。我的 if 子句中的代码永远不会被执行,我不知道为什么。

这是我的代码:

    private void Form1_Load(object sender, EventArgs e)
    {
        pb1.Image = Properties.Resources._1;
        pb2.Image = Properties.Resources._2;
        pb3.Image = Properties.Resources._3;
        pb4.Image = Properties.Resources._4;
        pb5.Image = Properties.Resources._10;
    }

    private void pb1_Click(object sender, EventArgs e)
    {
        if (pb1.Image == Properties.Resources._1)
        {
            pb1.Image = Properties.Resources._1x;
        }

        else { pb1.Image = Properties.Resources._1; }
    }

【问题讨论】:

  • 您需要找到一种方法来跟踪分配的图像,可能使用 .Tag 属性。 pb1.Image == Properties.Resources._1 不会进行图像比较;它将测试它们是否是同一个对象。
  • 谢谢。用 Tag 试了一下,效果很好。

标签: c# winforms picturebox


【解决方案1】:

在将图像附加到图片框之前,您需要保留对图像的本地引用,否则它总是会创建新对象,因此比较失败。

试试这个:

  public partial class Form1 : Form
  {

    Bitmap img1 = Properties.Resources._1;
    Bitmap img2 =Properties.Resources._2;
    Bitmap img3 = Properties.Resources._3;
    Bitmap img4 = Properties.Resources._4;
    Bitmap img10 = Properties.Resources._10;

    Bitmap img1x = Properties.Resources._1x
    public Form1()
    {
        InitializeComponent();
        pb1.Image = img1; //assign image1 to picturebox here
        pb2.Image = img2; 
        pb3.Image = img3; 
        pb4.Image = img4; 
        pb10.Image = img10; 
    }
    private void pb1_Click(object sender, EventArgs e)
    {
       if (pb1.Image == img1)
       {
         pb1.Image = img1x ;
       }

       else { pb1.Image = img1; }
    }
  }

【讨论】:

  • 我试过你的代码,效果很好。我还有一个问题,如果你能帮我解决的话。我的 onClick 完整代码是:
  • 请阅读:pastebin.com/x1KMGnW0
  • 如果上述代码有效,则接受它作为答案并发布另一个新问题...
猜你喜欢
  • 2013-01-15
  • 2012-07-14
  • 1970-01-01
  • 2020-12-16
  • 2023-03-17
  • 1970-01-01
  • 2016-11-10
  • 2020-06-17
  • 2013-09-13
相关资源
最近更新 更多