从另一个类/命名空间访问表单标签(Access form label from another cl

2019-10-22 18:50发布

我知道这已被要求数以千计的时间,但仍然有大量的研究后,我无法找到一个解决方案,我对这个职位真的很抱歉。

我想从一个类来访问我的标签在另一个命名空间。 这是一个代码示例,以更好地了解什么,我试图做的:

public partial class Main : Form
    {
        public Main()
        {
            InitializeComponent();
        }
    }



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

我怎么做的正确方法?

Answer 1:

一种选择是存储在这样的构造形式参考:

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)
    }
}


文章来源: Access form label from another class/namespace