我无法从C#

时间:2016-09-23 08:16:21

标签: c# .net reference static

首先要做的事情:我对编程很陌生,而且我正在尝试学习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中的图像。

图片存储在我称为照片[]的数组中。

3 个答案:

答案 0 :(得分:1)

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

public void valueChecker(char value,PictureBox pictureBox1)

答案 1 :(得分:0)

 var MyImage = new Bitmap(photos[x]);
 pictureBox1.Image = (Image) MyImage ;

答案 2 :(得分:0)

您的课程需要{{1>}的参考。您可以在创建类的实例后添加属性并进行设置,甚至可以将其直接传递给构造函数。

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++;
    }
}

请注意,还有其他方法可以解决这个问题;这只是一个相当直接和直接的。如果您的课程是一种服务类,您可能希望使用Tarek更直接的解决方案。请注意,他不只是将Execute someName = new Execute(pictureBox1); 添加到参数列表中。他还创建了函数PictureBox