For this case, where you want to get a Control of a Form and are receiving this error, then I have a little bypass for you.
Go to your Program.cs and change
Application.Run(new Form1());
to
public static Form1 form1 = new Form1(); // Place this var out of the constructor
Application.Run(form1);
Now you can access a control with
Program.form1.<Your control>
Also: Don’t forget to set your Control-Access-Level to Public.
And yes I know, this answer does not fit to the question caller, but it fits to googlers who have this specific issue with controls.
Привет Всем! Что означает
Для нестатического поля, метода или свойства «WindowsApplication1.Form1.textBox1» требуется ссылка на объект
C:UsersВладикAppDataLocalTemporary ProjectsWindowsFormsApplication1Form1.cs 7113 WindowsFormsApplication1
Код
Form2 f2 = new Form2();
f2.Show();
Form1.textBox1.Text = "text";
Ошибка в чём?
angry
8,64717 золотых знаков73 серебряных знака180 бронзовых знаков
задан 26 июн 2012 в 16:36
2
Есть несколько вариантов, самый простой, это сменить модификатор доступа textBox что не есть хорошо, т.е. с privat на public
public System.Windows.Forms.TextBox textBox1;
Лично я использую интерфейс, в котором реализую нужные мне свойства, события, etc…
Привязываю к классу, и
Form2 form = new Form2(this);
Думаю в интернете много инфы на эту тему, погуглите.
ответ дан 26 июн 2012 в 17:42
johniek_compjohniek_comp
2,5094 золотых знака25 серебряных знаков45 бронзовых знаков
4
Вы вообще понимаете что делаете? Form1 это класс, у вас должна быть ссылка на экземпляр первой формы. То есть можно его передавать как делегат (не путать с шарповскими делегатами), например в конструкторе
private Form1 delForm1;
public void Form2(Form1 delForm1) {
this.delForm1 = delForm1;
}
public void Foo() {
delForm1.ChangeText(this.textBox1.text);
}
А в классе Form1
public void ChangeText(string text) {
textBox1.text = text;
}
ответ дан 26 июн 2012 в 17:52
misha_mmisha_m
1,4059 серебряных знаков12 бронзовых знаков
2
|
Flooopsik 0 / 0 / 0 Регистрация: 11.01.2020 Сообщений: 4 |
||||||||||||
|
1 |
||||||||||||
Для нестатического поля, метода или свойства требуется ссылка на объект11.01.2020, 21:52. Показов 13952. Ответов 3 Метки нет (Все метки)
Здравствуйте, не могу решить проблемы в программе. Список ошибок: Ошибка CS0120 Для нестатического поля, метода или свойства «MathLangParser.Parse(string)» требуется ссылка на объект.
0 |
|
samana 2629 / 1597 / 852 Регистрация: 23.02.2019 Сообщений: 3,876 |
||||||||
|
11.01.2020, 22:21 |
2 |
|||||||
|
Решение Вы пытаетесь вызвать обычные методы в статическом методе, так не работает.
Либо оставьте эти методы обычными, но тогда перед их вызовом нужно создать экземпляр их класса:
В вашем случае, конечно правильнее сделать методы статичными, как в первом коде.
1 |
|
2728 / 1644 / 871 Регистрация: 14.04.2015 Сообщений: 5,616 |
|
|
11.01.2020, 22:23 |
3 |
|
Flooopsik, во-первых, ошибка говорит о том, что нет ссылки на определенную сборку. а взять ее можно из GitHub https://github.com/ArtObr/PascalCompilator но это тоже не решит проблемы, так как исходный метод Execute в классе MathLangIntepreter не имеет параметров, а ты в него пытаешься что-то передать. что касается Parse в MathLangParser, то его беглым взглядом вообще найти не удалось, откуда ты его откопал, не известно.
1 |
|
Модератор
14723 / 10062 / 2676 Регистрация: 21.04.2018 Сообщений: 29,918 Записей в блоге: 2 |
|
|
12.01.2020, 02:24 |
4 |
|
Flooopsik, вы приводите текст ошибок, НО не приводите файлы и номера строк где они возникли. Вы привели коды двух методов
0 |
|
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
12.01.2020, 02:24 |
|
Помогаю со студенческими работами здесь Для нестатического поля, метода или свойства требуется ссылка на объект Для нестатического поля, метода или свойства требуется ссылка на объект Для нестатического поля, метода или свойства требуется ссылка на объект
Ошибка “Для нестатического поля, метода или свойства требуется ссылка на объект” Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 4 |
In this tutorial, you’ll learn everything about the error “CS0120 – An object reference is required for the nonstatic field, method, or property ‘member’ in C#, why this error appears in your .NET Code and how you can fix them by following simple steps.
C# Compiler Error
This is how the CS0120 error in C# looks like in general.
CS0120 – An object reference is required for the nonstatic field, method, or property ‘member’
Reason for the Error
You will receive the CS0120 error in C# when you are trying to access an non-static field, property or method from a static class.
For example, the below code snippet contains a non-static property MyProperty defined in the class by name “DeveloperPublish” and you are trying to access this non-static property from a static method (“Main”) defined in the same class.
namespace DeveloperPublishNamespace
{
public class DeveloperPublish
{
public int MyProperty { get; set; }
public static void Main()
{
MyProperty = 1;
}
}
}
This will result with the compiler error CS0120.
Error CS0120 An object reference is required for the non-static field, method, or property ‘DeveloperPublish.MyProperty’ ConsoleApp1 C:UsersSenthilsourcereposConsoleApp1ConsoleApp1Program.cs 9 Active

Solution
To fix the CS0120 Error in C#, avoid accessing the non-static member directly from the static method.
- Remove From My Forums
-
Вопрос
-
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;public class A //Класс A
{
public float a; // Поле а класса А
public float b; // Поле b класса A
public A() { a = 3f; b = 2.5f; } // Конструктор без параметров
public float c //Свойство с
{
get { return a / b; } //Метод
set { c = value; } //Возвращаемое значение
}
}
public class B : A //Класс В — наследник класса А
{
public float d = 10f; // Поле d класса В
public int i;
public float c2 // Свойство с2
{
get { return a + b + d; }
set { c2 = value; }
}
static void Main(string[] args) //Начало программы
{
Console.WriteLine(«Введите число и увидите значения «);
Console.WriteLine(«1 — полей a,b,d»);
Console.WriteLine(«2 — свойств с,c2»);
B.i = Console.ReadLine();
switch (B.i) //Проверяем чему равно i
{
case 1: Console.WriteLine(«a={0} «, B.a, «b={0} «, B.b, «d={0} «, B.d); break;
case 2: Console.WriteLine(«2={0} «, B.c, «c2={0} «, B.c2); break;
default:
Console.WriteLine(«Введено неправильное значение «); break;
}
}
}
Ответы
-
Добрый день.
В языке C# разделяют динамические и статические члены класса. То что объявляете вы, например:
public class A //Класс A { public float a; // Поле а класса А }Это объявление динамического поля. Доступ к нему вне класса может идти только через объектную переменную. Как-нибудь так:
A myObject = new A(); myObject.a = 10;
Чтобы обращаться по имени класса, необходимо член объявить как статический, например, вот так:
public class A //Класс A { public static float a; // Поле а класса А }К такому полю можно будет обращаться через имя класса:
A.a = 10;
-
Изменено
2 декабря 2016 г. 11:05
-
Помечено в качестве ответа
Maksim MarinovMicrosoft contingent staff, Moderator
5 декабря 2016 г. 8:27
-
Изменено

Сообщение было отмечено Flooopsik как решение