Почему я не могу вызвать из другого класса? - PullRequest
0 голосов
/ 13 ноября 2018

Моя проблема в том, что я не могу вызвать сообщение в TextBox и не могу понять, почему.

Существует основной класс и второй класс, оба с вызовом другого.

Где моя ошибка?

using System;
using System.Windows.Forms;

namespace Class_Test___Invoke
{
    public partial class MAINFORM : Form
    {
        public MAINFORM()
        {
            InitializeComponent();
            _INVOKER = this;
        }

        private MAINFORM _INVOKER;

        private static CLASS _CLASS = new CLASS();

        private void button1_Click(object sender, EventArgs e)
        {
            _CLASS._MESSENGER();
        }

        public void _LOGGING(string _MESSAGE)
        {
            if (InvokeRequired)
            {
                _INVOKER.Invoke(new Action<string>(_LOGGING), new object[] { _MESSAGE });
                textBox_ausgabe.AppendText(_MESSAGE);
                return;
            }
            else textBox_ausgabe.AppendText(_MESSAGE);
        }
    }
}

namespace Class_Test___Invoke
{
    class CLASS
    {
        private MAINFORM _MAINFORM = new MAINFORM();

        public void _MESSENGER()
        {
            _MAINFORM._LOGGING("Test");
        }
    }
}

1 Ответ

0 голосов
/ 13 ноября 2018

Вы предполагаете, что _MAINFORM, который вы создаете в конструкторе CLASS, является таким же экземпляром, что и форма, где была нажата кнопка, что не соответствует действительности. У тебя проблемы с яйцом и курицей. Ваша форма создает CLASS, а CLASS создает форму. Итак, теперь у вас есть две разные формы . (или два разных экземпляра CLASS, поскольку вы не показываете, как создается первая форма или CLASS)

Вам необходимо "соединить" форму и класс либо путем передачи формы конструктору в качестве параметра, либо каким-либо другим способом.

Наконец, я бы посоветовал вам немного изучить лучшие практики для имен классов и членов. Для опытного разработчика C # это немного смущает, когда они видят имена во всех заглавных буквах и с подчеркиванием.

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