从另一个类/命名空间访问表单标签

我知道这已被问了数千次,但经过大量的研究后我找不到解决方案,我对这篇文章感到非常抱歉。

我想从另一个命名空间中的类访问我的Label。 这是一个代码示例,可以更好地理解我要做的事情:

public partial class Main : Form { public Main() { InitializeComponent(); } } //class in another namespace class Servers { public void _SetlabelText() { Main.label1.Text = "New Text"; } } 

我怎么能以正确的方式做到这一点?

一种选择是在构造函数中存储对表单的引用,如下所示:

 public class Servers { private Form _frmMain; public Servers(Form frmMain) { _frmMain = frmMain; } public void SetlabelText() { _frmMain.label1.Text = "New Text"; } } 

并像这样使用它:

 public partial class Main : Form { public Main() { InitializeComponent(); var servers = new Servers(this); servers.SetlabelText(); } } 

但是,通常建议返回Form类并将其设置在那里,如下所示:

 public partial class Main : Form { public Main() { InitializeComponent(); label1.Text = Servers.GetTextForLabel(); } } public class Servers { public static string GetTextForLabel() { return "New Text"; //(I assume this will be much more complex) } }