Передача данных из класса в textBox

255
08 марта 2018, 08:45

Есть программа которая сравнивает строки по дате. Необходимо чтобы в textBox отображался процесс работы программы, а именно выводились найденные строки. Нашел способ вывода через делегаты. Сделал следующим образом:

В классе Program объявил

public static readonly GpsEditor MEditor;

В классе формы добавил:

   public delegate void TextBoxDelegate(string text);
   public void MyTextBox(string input)
   {
       if (textBox1.InvokeRequired)
       {
           textBox1.Invoke(new TextBoxDelegate(MyTextBox), new object[] {input + "\n"});
       }
       else
       {
           textBox1.Text += input + "\n";
       }
   }

А в классе в котором находятся строки прописал так:

Program.MEditor.MyTextBox(Info.View);

В результате получаю:

System.NullReferenceException: 'Object reference not set to an instance of an object.'

Если в классе объявлю объект формы исключение не выйдет, но текстбокс так и не обновляется. Rак правильно передавать данные из класса в textBox?

Answer 1

Попробуйте так:

    public void MyTextBox(string input)
    {
        if (InvokeRequired)
        {
            BeginInvoke(new TextBoxDelegate(MyTextBox), new object[] { input });
            return;
        }
        textBox1.Text += input + "\n";
    }

Но лучше конечно выводить многострочный текст в RichTextBox:

        this.richTextBox1.SelectionStart = this.richTextBox1.TextLength;
        this.richTextBox1.SelectionLength = 0;
        this.richTextBox1.SelectionColor = Color.Black;
        this.richTextBox1.AppendText((this.richTextBox1.TextLength > 0 ? "\r\n" : "") + input);
        this.richTextBox1.SelectionColor = this.richTextBox1.ForeColor;
        this.richTextBox1.ScrollToCaret();

Чтобы обратиться к форме, нужно её вызвать из списка открытых форм по её имени.

MEditor form = (MEditor) Application.OpenForms["MEditor"];
if (form != null)
    form.MyTextBox(Info.View);

Напрямую при обращении к форме вы всегда получите ошибку!

READ ALSO
Поиск и вывод данных из list C#

Поиск и вывод данных из list C#

Имеется таблица xlsx с тремя столбцами, из нее через программу необходимо найти значения "ВНИМАНИЕ" из первого столбца и вывести список с прилегающими...

245
Авторизация на C# при помощи базы данных mongoDB

Авторизация на C# при помощи базы данных mongoDB

Добрый вечерПомогите разобраться! Есть проект MVC где база данных на mongoDB

265
Исключение CaptchaNeedException не обрабатывается (авторизация ВК, C#, библиотека VkNet)

Исключение CaptchaNeedException не обрабатывается (авторизация ВК, C#, библиотека VkNet)

Делаю авторизацию ВК библиотекой VkNetПо идее при необходимости ввести капчу выбрасывается VkNet

249
В каких случаях имеют смысл var-шаблоны?

В каких случаях имеют смысл var-шаблоны?

В C# 70 появились var-шаблоны которые судя по документации всегда trueи нужны для создания новой переменной с таким же типом и значением

211