как получить доступ к публичной функции Form1 из класса Program - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь создать функцию, которая может быть вызвана из класса "Program", который мог бы вызвать метод AppendText textBoxes в моей форме. Цель в конце состоит в том, чтобы использовать эту функцию в качестве замены Console.WriteLine, поэтому мне нужно иметь возможность передать строку этой функции, чтобы она добавляла этот определенный бит текста.

Моим первым инстинктом было создание открытого метода в моем классе Form1, который я затем мог бы вызывать из «Программы». Вот : В классе Form1:

public void Add(String message)
        {
            textBox1.AppendText(message + Environment.NewLine);
        }

Странная вещь в том, что когда я вызываю этот метод из класса Form1, он работает нормально, но когда я вызываю его из класса Program, ничего не происходит, даже если этот метод является публичным.

Вызов следующего ничего не делает, и моя форма появляется, но текстовое поле пусто.

static void Main()
        {        
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Form1 mainForm = new Form1();
            Application.Run(mainForm);
            mainForm.Add("hello world");
        }

, но добавление этой функции в конструктор Form1 работает, и textBox появляется с текстом в

public Form1()
        {
            InitializeComponent();
            this.Add("hello");
        }

Я не совсем понимаю, почему функция будет вести себя по-разному внутри класса или снаружи, когда код прекрасно компилируется и не выдает никакой ошибки.

1 Ответ

2 голосов
/ 25 марта 2019

Когда вы вызываете Application.Run, управление входит в цикл, поэтому следующая строка выполняется только при выходе из приложения

https://docs.microsoft.com/es-es/dotnet/api/system.windows.forms.application.run?view=netframework-4.7.2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...