如何从Program类访问Form1公共功能

时间:2019-03-25 11:51:15

标签: c# winforms

我正在尝试创建一个可以从“程序”类调用的函数,该函数可以在表单中调用textBoxes的AppendText方法。 最后的目标是使用此函数替代Console.WriteLine,因此我需要能够将字符串传递给该函数,以便在其后附加特定的文本位。

我的第一个直觉是在Form1类中创建一个公共方法,然后可以从“程序”中调用该方法。这里是 : 在Form1类中:

public void Add(String message)
        {
            textBox1.AppendText(message + Environment.NewLine);
        }

奇怪的是,当我从Form1类调用该方法时,它可以正常工作,但是当我从Program类中调用该方法时,即使该方法是公共的,也没有任何反应。

调用以下命令没有任何作用,并且我的表单出现,但文本框为空。

static void Main()
        {        
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Form1 mainForm = new Form1();
            Application.Run(mainForm);
            mainForm.Add("hello world");
        }

但是将该函数添加到Form1的构造函数中会起作用,并且textBox随文本一起出现在

public Form1()
        {
            InitializeComponent();
            this.Add("hello");
        }

我很困惑为什么在代码正常编译且没有引发任何错误的情况下,函数在类内部或外部的行为会有所不同。

1 个答案:

答案 0 :(得分:2)

调用Application.Run时,控制进入一个循环,因此,下一行仅在应用程序退出时执行

https://docs.microsoft.com/es-es/dotnet/api/system.windows.forms.application.run?view=netframework-4.7.2