我正在尝试将课程中的文本发布到活动表单中,并且我在确定如何执行此操作时遇到了一些麻烦。我见过很多关于使用Invoking在线程/表单中发布内容但我无法让我的类看到activeform中的任何公共函数。
实施例
// File: Form1.cs
namespace Form1
{
public partial class Form1 : Form
{
public void SetText(string text)
{
this.Invoke((MethodInvoker) delegate { \\ Always requires invoke
TextBox1.Text += text + "\n";
});
}
}
然后我的第二个类在第二个线程中运行(因为它是一个很长的过程)
// File: Class.cs
using Form1;
namespace Form1
{
public void DoSomething() // Called in Form1
{
// Does stuff
string TextToGoBack; // Has text when DoSomething runs
// Here is where I get stuck
Form form = Form1.ActiveForm;
form.SetText(TextToGoBack); // SetText is not showing up here no matter what I do
}
}
编辑:
我不会反对使用自定义事件来完成相同的事情,但我也很难解决这些问题。
答案 0 :(得分:1)
Form.ActiveForm
会返回Form
个对象,而不是Form1
类的实例,因此没有SetText
方法。
您可以将它投射到Form1
,但这会很脆弱。我会将Form1
的实例传递给您的DoSomething
方法。