Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2019, 14:13   #11
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,770
По умолчанию

Цитата:
Сообщение от Ищущий1 Посмотреть сообщение
Но любой вызов такого метода сразу ошибка CS0120 Для не статического поля, метода или свойства "Form1.getLabel()" требуется ссылка на объект.
Значит не в классе... Делайте геттер в классе форм1.
p51x вне форума Ответить с цитированием
Старый 28.07.2019, 14:19   #12
Ищущий1
Пользователь
 
Регистрация: 11.03.2018
Сообщений: 19
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Почеу оно паблик до сих пор?
Вы делали геттер в классе форм1?
Вернул в private. на геттер не ругается. Но при вызове геттера та же ошибка.

Цитата:
Сообщение от p51x Посмотреть сообщение
Вы делали геттер в классе форм1?
Да, в Form1
Ищущий1 вне форума Ответить с цитированием
Старый 28.07.2019, 14:21   #13
Ищущий1
Пользователь
 
Регистрация: 11.03.2018
Сообщений: 19
По умолчанию

Код:
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Button1_Click(object sender, EventArgs e)
        {
            label1.Text = "нажата";
        }
        public static string getLabel1(string text)
        {
            //Form.Close();
            return "kjhkjh";
            //Form1.label1.text = text;
            //Console.WriteLine("Hello World "+text);
        }
        public void getLabel(string text)
        {
            label1.Text=text;
        }

        private void Label1_Click(object sender, EventArgs e)
        {
            label1.Text = "нажата лейбл";
        }
        
    }
Ошибок нет.
Но я не могу вызвать такой метод.
Как только пытаюсь такое написать:
Код:
public class Class1
    {
        [System.Reflection.Obfuscation(Feature = "DllExport")]
        public static int testik(int xx, int yy)
        {
            return xx + yy+1;
        }

        [System.Reflection.Obfuscation(Feature = "DllExport")]
        public static void init()
        {
            Form1 MyFrm = new Form1();
            MyFrm.ShowDialog(); //Если использовать MyFrm.Show(); вылетит с ошибкой.
        }

        [System.Reflection.Obfuscation(Feature = "DllExport")]
        public static void newdata(double data1)
        {
            //object lab = 
            Form1.getLabel("тест");

            //Form1.getLabel("test");
            //object test=Form1.getLabel();
            
            //Form1.getLabel("тест");
            //int test = Form1.getLabel();
            //Form1.getLabel().text = Convert.ToString(data1);
        }
    }
Сразу ошибка CS0120 Для не статического поля, метода или свойства "Form1.getLabel()" требуется ссылка на объект.
Ищущий1 вне форума Ответить с цитированием
Старый 28.07.2019, 14:26   #14
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,770
По умолчанию

Что за бред вы пишите?

Цитата:
Сообщение от Ищущий1 Посмотреть сообщение
public static string getLabel1(string text)
Зачем статик? Зачем параметр у геттера?

Цитата:
Сообщение от Ищущий1 Посмотреть сообщение
public void getLabel(string text)
Почему сеттер называется также, как и геттер?

Цитата:
Сообщение от Ищущий1 Посмотреть сообщение
Form1.getLabel("тест");
Почему вы нестатический метод вызываете не через объект, а через класс? Вы про ООП вообще что-нибудь читали? Вызывайте через объект MyFrm.
p51x вне форума Ответить с цитированием
Старый 28.07.2019, 14:37   #15
Ищущий1
Пользователь
 
Регистрация: 11.03.2018
Сообщений: 19
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Зачем статик? Зачем параметр у геттера?
Код:
public static string getLabel1(string text)
Да это мои эксперименты. Это другой геттер. В конце "1".

Цитата:
Сообщение от p51x Посмотреть сообщение
Почему сеттер называется также, как и геттер?
Код:
public void getLabel(string text)
Да, действительно, это не геттер. Я его попробовал и не понял как его юзать. Что он возвращает то?
Когда разобраться не получилось решил пойти от обратного и передавать методу то, что нужно изменить на форме. Но ошибка одна и та же постоянно.

Цитата:
Сообщение от p51x Посмотреть сообщение
Почему вы нестатический метод вызываете не через объект, а через класс?
Этот момент я что-то не понял.

Цитата:
Сообщение от p51x Посмотреть сообщение
Вызывайте через объект MyFrm.
Пишет нет такого имени в этом контексте.
Ищущий1 вне форума Ответить с цитированием
Старый 28.07.2019, 14:41   #16
Ищущий1
Пользователь
 
Регистрация: 11.03.2018
Сообщений: 19
По умолчанию

переписал на обычный геттер.
Код:
 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Button1_Click(object sender, EventArgs e)
        {
            label1.Text = "нажата";
        }
        
        public Label getLabel()
        {
            return label1;
        }

        private void Label1_Click(object sender, EventArgs e)
        {
            label1.Text = "нажата лейбл";
        }
        
    }
обращаюсь к методу
Код:
[System.Reflection.Obfuscation(Feature = "DllExport")]
        public static void newdata(double data1)
        {
            object lab = Form1.getLabel();

            //Form1.getLabel("test");
            //object test=Form1.getLabel();
            
            //Form1.getLabel("тест");
            //int test = Form1.getLabel();
            //Form1.getLabel().text = Convert.ToString(data1);
        }
и получаю знакомую ошибку CS0120 Для не статического поля, метода или свойства "Form1.getLabel()" требуется ссылка на объект.
Ищущий1 вне форума Ответить с цитированием
Старый 28.07.2019, 14:42   #17
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,770
По умолчанию

Цитата:
Сообщение от Ищущий1 Посмотреть сообщение
Этот момент я что-то не понял.
Ну так почитайте что-нибудь про ООП. Узнайте чем различаются простые методы и статические.

Цитата:
Сообщение от Ищущий1 Посмотреть сообщение
Пишет нет такого имени в этом контексте.
Ну дык, естественно. Оно умерло в методе выше вместе с LABEL1.
p51x вне форума Ответить с цитированием
Старый 28.07.2019, 14:43   #18
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,770
По умолчанию

Цитата:
Сообщение от Ищущий1 Посмотреть сообщение
и получаю знакомую ошибку CS0120 Для не статического поля, метода или свойства "Form1.getLabel()" требуется ссылка на объект.
Продолжайте биться головой об стену...
p51x вне форума Ответить с цитированием
Старый 28.07.2019, 14:50   #19
Ищущий1
Пользователь
 
Регистрация: 11.03.2018
Сообщений: 19
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Ну так почитайте что-нибудь про ООП. Узнайте чем различаются простые методы и статические.
Почитал. не нужно создавать экземпляр класса а обращаемся по имени. Я не понимаю какое это имеет отношение к моей проблеме.

Цитата:
Сообщение от p51x Посмотреть сообщение
Ну дык, естественно. Оно умерло в методе выше вместе с LABEL1.
Я понимаю, поэтому и не делал так.
Ищущий1 вне форума Ответить с цитированием
Старый 28.07.2019, 14:50   #20
Ищущий1
Пользователь
 
Регистрация: 11.03.2018
Сообщений: 19
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Продолжайте биться головой об стену...
Вы настоящий герой! Спасибо вам!
Ищущий1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обратиться к компоненту на форме? AlkaloiD Общие вопросы по Java, Java SE, Kotlin 10 10.04.2011 21:43
Как обратиться к уже созданным на форме label'ам в цикле? bemm Общие вопросы .NET 5 21.03.2011 17:44
обратиться к label на форме borik120 Windows Forms 8 16.09.2010 22:33
Как обратиться к активной форме? Dimon88 Помощь студентам 4 18.10.2008 00:03
как обратиться к невидемой форме Scorpeon Общие вопросы Delphi 3 29.06.2007 16:16