重要的是:我对编程很陌生,我正在努力学习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[]。
你的方法声明应该是这样的:
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
函数