如何将C#对象传递给另一个不从它继承的类?

时间:2017-02-08 13:35:07

标签: c# winforms

我有一个Data类,我存储了某些值,如State,Initials等。

我有这些值的get / set。

这是一个Windows窗体应用程序,所以我创建了另一种类似的视图

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

        private void Actions_Load(object sender, EventArgs e)
        {
            testLabel.Text = ;
        }
    }

所以就像测试用例一样,我想将这个标签.Text值设置为来自Data的字符串,就像

一样
class Data
{
public string State { get; set; }
public string Initials { get; set; }


public Data()
{

}
}

数据是从家庭类

这样设置的
  Data dat = new Data();
            dat.State = "IN";

我在网上看到最好的方法是将它作为一个值传递给我,但我不确定最好的方法。

4 个答案:

答案 0 :(得分:3)

如果您需要在表单加载事件中使用State,那么最好的方法是传递状态值(或者您的Data对象,如果您需要的不仅仅是状态字符串)来形成构造函数:

    public Actions(string state) // or public Actions(Data data)
    {
        InitializeComponent();
        State = state;
    }

然后

    private void Actions_Load(object sender, EventArgs e)
    {
        testLabel.Text = State;
    }

答案 1 :(得分:0)

这是你想要做的吗?

public partial class Actions : Form
{
    private Data myData;
    public Actions()
    {
        myData = new Data();
        myData.State = "California";
        //the best state :D\\
        InitializeComponent();
    }

    private void Actions_Load(object sender, EventArgs e)
    {
        testLabel.Text = myData.State;
    }
}

编辑

public partial class Actions : Form
{
    private Data myData;
    public Actions(Data otherDataObject)
    {
        myData = otherDataObject;
        testLabel.Text = myData.State; //here
        InitializeComponent();
    }
    private void Actions_Load(object sender, EventArgs e)
    {
        testLabel.Text = myData.State; //or here
    }
}

加载表单时,将数据对象传递给表单,它将在此表单的任何位置提供

答案 2 :(得分:0)

您可以向表单添加Data属性。

    public class Data
    {
        public string State { get; set; }
    }

    public partial class Actions : Form
    {
        public Data Data { get; set; }

        private void Actions_Load(object sender, EventArgs e)
        {
            testLabel.Text = data.State;
        }
    }

在其他地方,如果您已有数据对象dat

        var actionForm = new Actions();
        actionForm.Data = dat;

答案 3 :(得分:0)

好的,我已经弄清楚了。

我最初做的是正确的,但我需要公开我的Data类。

我的代码是:

public partial class Actions : Form
{
    public Actions(Data data)
    {
        InitializeComponent();
        testLabel.Text = data.State;
    }
}


public class Data
{
    public string State { get; set; }
    public string Initials { get; set; }