我的问题是,我无法将消息调用到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");
}
}
}
您假设在CLASS
构造函数中创建的_MAINFORM
是与单击按钮的窗体相同的实例,但事实并非如此。你有鸡和蛋的问题。您的表单创建一个CLASS
,CLASS
创建一个表单。因此,现在您有两个不同的表单。(或者两个不同的CLASS
实例,因为您没有显示第一个表单或CLASS
是如何创建的(
您需要通过将窗体作为参数传递给构造函数或通过其他方式来"连接"窗体和类。
最后,我鼓励您对班级和成员名称的最佳实践进行一些研究。对于一个经验丰富的C#开发人员来说,看到名字全大写并以下划线开头有点令人不安。