Изменение BackColor формы Windows

Почему я не могу таким образом изменить цвет фона моей формы?

MainForm.BackColor = System.Drawing.Color.Black;

Вот что я получаю в консоли:

An object reference is required for the non-static field, method, or property 'System.Windows.Forms.Control.BackColor.get' (CS0120) 

person user3541263    schedule 23.04.2014    source источник
comment
Используйте вместо этого this.BackColor или просто BackColor   -  person Icemanind    schedule 24.04.2014
comment
возможный дубликат .. stackoverflow.com/questions/ 2891686 /   -  person BRBT    schedule 24.04.2014
comment
спасибо, @icemanind :) Ура gr8 помогите .... это сработало :)   -  person user3541263    schedule 24.04.2014
comment
просто изменил его на это: this.BackColor = System.Drawing.Color.Black;   -  person user3541263    schedule 24.04.2014
comment
Попробуйте это, надеюсь, это поможет вам. Изображение решения   -  person Abhishek Anand    schedule 16.03.2019


Ответы (2)


Статические классы - это классы, экземпляры которых невозможно создать. Статические классы имеют статические методы или статические свойства (или и то, и другое). Когда вы используете такую ​​строку:

MainForm.BackColor = System.Drawing.Color.Black; // <class name>.<property>

Компилятор C # сначала ищет переменную локального класса с именем MainForm. Поскольку его не было, он посмотрел за пределы вашей локальной области и нашел ваш Windows.Form класс с именем MainForm.

Затем он посмотрел, есть ли у класса MainForm статическое свойство с именем BackColor. Затем компилятор сказал: «О, смотрите, есть свойство с именем BackColor, но оно не статическое», когда компилятор пожаловался и выдал вам ошибку, с которой вы столкнулись.

Изменив его на this.BackColor, компилятор знал, что вы хотите установить цвет фона ЭТОГО ЭКЗАМЕНА MainForm, который был this или, по умолчанию, form1:

this.BackColor = System.Drawing.Color.Black; // <this instance>.<property>

И в качестве примечания, ключевое слово this не требуется. Отсутствие этого предполагает «этот объект». Вы также можете сделать это:

BackColor = System.Drawing.Color.Black; // <this instance>.<property>

Надеюсь, в этом есть больше смысла!

person Icemanind    schedule 24.04.2014

Вы используете MainForm, как если бы это был статический класс. Либо сделайте вашу форму статической, либо создайте ее экземпляр.

MainForm form = new MainForm();

Затем используйте

form.BackColor = Color.Black;

Добавляя комментарий к вашему вопросу, придерживайтесь

 this.BackColor = Color.Black;

внутри метода вашей формы и просто вызовите этот метод. Вот так.

void changeBackColor(Color color)
{
    this.BackColor = color;
}

Это позволит вам передать цвет методу и соответственно изменить BackColor.

Надеюсь это поможет. Я бы рекомендовал прочитать книгу о C #. Объекты нельзя использовать до инициализации. Это довольно элементарная концепция.

person Silver    schedule 23.04.2014