Разместить текст в activeform из отдельного класса - PullRequest
0 голосов
/ 13 октября 2011

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

Пример

// File: Form1.cs

namespace Form1
{
    public partial class Form1 : Form
    {
        public void SetText(string text)
        {
            this.Invoke((MethodInvoker) delegate { \\ Always requires invoke
                TextBox1.Text += text + "\n";
        });
    }
}

второй класс, который запускается во втором потоке (потому что это длинный процесс)

// File: Class.cs

using Form1;

namespace Form1
{
    public void DoSomething() // Called in Form1
    {
        // Does stuff

        string TextToGoBack; // Has text when DoSomething runs

        // Here is where I get stuck
        Form form = Form1.ActiveForm;

        form.SetText(TextToGoBack); // SetText is not showing up here no matter what I do
    }
}

РЕДАКТИРОВАТЬ:

Я не был бы против использования пользовательских событий для достижения того же,но мне трудно это выяснить.

1 Ответ

1 голос
/ 13 октября 2011

Form.ActiveForm возвращает объект Form, а не экземпляр вашего класса Form1, поэтому не имеет метода SetText.

Вы можете привести его к Form1, ноэто было бы хрупким.Я бы передал экземпляр Form1 вашему DoSomething методу.

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