2014-09-14 5 views
0

Я делаю игру, и у меня есть класс под названием gameScripts. Внутри gameScripts используется метод public void под названием paintSquare. Когда этот метод вызывается, метод использует операторы 2 if, и в зависимости от того, какой из них истинен, изображение квадратов будет соответствующим образом изменено.Невозможно использовать pictureBox.Image в моем классе

Проблема заключается в том, когда я пытаюсь использовать pictureBox.Image = Image.FromFile("cross.png"); изменить изображение на крест, pictureBox.Image получает красную линию под ним с сообщением об ошибке «Error 2 'System.Windows.Forms.Control' does not contain a definition for 'Image' and no extension method 'Image' accepting a first argument of type 'System.Windows.Forms.Control' could be found (are you missing a using directive or an assembly reference?) c:\x\x\x\x\x\x\x\gameScripts.cs»

Я попытался включая System.Drawing и систему. Windows.Forms в моих пространствах имен, но я все еще получаю эту ошибку.

Любая помощь будет оценена, спасибо.

+0

Какая часть сообщения об ошибке вы не понимаете? Вы хотите «PictureBox», а не «Control». – SLaks

+0

Хорошо, если я хотел изменить изображение в своем коде, я бы использовал Image.FromFile («Image.png»), чтобы изменить изображение, но в этом случае произошло сообщение об ошибке –

+0

Что такое 'pictureBox'? Как вы объявляете и присваиваете ему значение? – har07

ответ

0

Сообщение 'ClassXXX' does not contain a definition for 'YYY' and no extension method 'YYY' accepting a first argument of type 'ClassXXX' could be found (are you missing a using directive or an assembly reference?) означает буквально, что он говорит. Скорее всего в вас коде есть конструкция, как это:

myObject.YYY 

но класс, экземпляр которого MyObject это, не имеет элемент с именем YYY.

Например:

class MyClass { 
    public string MyField; 
} 

... 

var myObj = new MyClass(); 
myObj.MyField = "OK"; 
myObj.NotMyField = "FAIL"; // compiler will complain at this line 

Однако компилятор получает список доступных свойств и методов, глядя на тип переменной. Это может привести к ситуации, когда сам объект имеет член, но компилятор не может его видеть, поскольку переменная определяется другим типом.

Рассмотрим следующий фрагмент кода:

class MyExtClass : MyClass { 
    public string MyNewField; 
} 

... 

MyClass myObj = new MyExtClass(); 
myObj.MyField = "OK"; 
myObj.MyNewField = "FAIL"; // compiler will complain at this line 
          // because MyClass does not have it 

Так что в вашем коде pictureBox это, кажется, определяется как System.Windows.Forms.Control. Так что даже если это так, System.Windows.Forms.PictureBox, компилятор не может этого знать и останавливается с ошибкой.

Смежные вопросы