为什么我不能从其他班级调用?

时间:2018-11-13 12:20:15

标签: c# .net winforms invoke

我的问题是,我无法在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 :(得分:0)

您假设您在_MAINFORM构造函数中创建的CLASS与单击按钮的形式是 same 实例,不是这种情况。你有鸡和蛋的问题。您的表单将创建一个CLASS,而CLASS将创建一个表单。所以现在您有两种不同的形式。 (或两个不同的CLASS实例,因为您没有显示第一个表单或CLASS的创建方式)

您需要通过将表单作为参数传递给构造函数或通过其他某种方式来“连接”表单和类。

最后,我鼓励您对类和成员名的最佳做法进行一些研究。对于一个经验丰富的C#开发人员来说,看到所有大写字母的名字并加下划线是有点令人困惑。