首先要做的事情:我对编程很陌生,而且我正在尝试学习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中的图像。
图片存储在我称为照片[]的数组中。
答案 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
。