我不能从c#代码中更改pictureBox1中的图像

本文关键字:pictureBox1 图像 代码 不能 | 更新日期: 2023-09-27 18:08:38

重要的是:我对编程很陌生,我正在努力学习c#语言

我的目标:有一个方法来改变pictureBox1中的图片。

问题:我得到一个错误,告诉我非静态字段需要对象引用。

这是我的类的一个片段,方法应该在这里。

private class Execute
{
    private void valueChecker(char value)
    {
        for (int i = 0; i <= charLenght; i++)
        {
            if (value != CharArray[i])
            {
                i++;
            }
            else if (value == CharArray[i])
            {
                CorrectLetter(value);
                svalue = true;
            }
        }
        if (svalue == true)
        {
            /* This is where the command is happening.
             But I get error message : "An object reference is required for the non-static field, method or property."
            */
            pictureBox1.Image = photos[x];
            x++;
        }
    }
}

我也试过在代码的其他地方制作新的类和方法,并从if语句调用它,但我没有得到这个工作。

如果svalue == true,我需要改变pictureBox1中的图片

关于我到底在做什么的一点进一步的信息:我做了一个绞刑游戏作为练习,我想在pictureBox1中更新图像,如果输入的字母不能在答案中找到。

图片存储在一个数组中,我称之为photos[]。

我不能从c#代码中更改pictureBox1中的图像

你的方法声明应该是这样的:

public void valueChecker(char value,PictureBox pictureBox1)
 var MyImage = new Bitmap(photos[x]);
 pictureBox1.Image = (Image) MyImage ;

您的类需要一个引用PictureBox。您可以添加属性,并在创建类的实例后设置它,甚至将其直接传递给构造函数。

private class Execute
{
   public PictureBox pBox {get; set;}
   public Execute(PictureBox  pb)
   {
        pBox  = pb;
   }
   private void valueChecker(char value)  // or maybe public ?!
   {
      ...
      ...
      if (pBox != null) pBox.Image = photos[x];
      x++;
    }
}

创建类实例:

Execute someName = new Execute(pictureBox1);

请注意,还有其他方法可以解决这个问题;这是一个相当直接和直接的问题。如果你的课程是一种服务类课程,你可能会想要使用Tarek的更直接的解决方案。注意,他不仅将PictureBox添加到参数列表中。他还制作了public函数