从Form2中的Class获取属性的值,并在C#中的Form1中设置该值

时间:2011-09-26 08:21:30

标签: c# winforms

以下是该方案。我想在Class1中设置Server的值,我在Form1中设置值。 然后在Form2中的Class1中获取Server的值。这就是我所拥有的。

class Class1
{
    private string server;

    public string Server
    {
        get { return server; }
        set { server = value; }
    }
}

//Form1 where i want to set the value of server
private void setBtn_Click_1(object sender, EventArgs e)
{
    Class1 sample = new Class1();
    sample.Server = serverTxt.Text;
}

//Form2 where i want to get the value of server that i've set in Form1
private void setBtn_Click_1(object sender, EventArgs e)
{
    Class1 sample = new Class1();
    string serVer = sample.Server;
}

我知道我不能拥有服务器的值,因为我声明了一个新的Class1实例。但有没有什么办法可以让我在Form2中获得我在Form1中设置的Server的值?

请跟我一起,我是C#的新手,先谢谢你们:D

6 个答案:

答案 0 :(得分:2)

有许多替代方案,但Class1的静态实例会更容易。

在form1中,声明/创建Class1类的静态实例

//Form1 where i want to set the value of server
public static Class1 sample=new Class1();
private void setBtn_Click_1(object sender, EventArgs e)
{
    sample.Server = serverTxt.Text;
}

并在Form2中,

//Form2 where i want to get the value of server that i've set in Form1
private void setBtn_Click_1(object sender, EventArgs e)
{
    string serVer = Form1.sample.Server;
}

答案 1 :(得分:1)

不仅你不能这样做,而且在执行setBtn_Click_1之后你的代码中你创建的Class1类型的对象消失了 - 这是因为你在方法中只有一个对它的引用,所以当方法执行引用已经消失了!

答案 2 :(得分:1)

您可以在创建第二个表单时在构造函数中发送它。 那样的话呢

class Class1
{
    private string server;

    public string Server
    {
        get { return server; }
        set { server = value; }
    }
}

//form 1
private void setBtn_Click_1(object sender, EventArgs e)
{
    Class1 sample = new Class1();
    sample.Server = serverTxt.Text;
    prevForm = sample;
}



//form 2
private void setBtn_Click_1(object sender, EventArgs e)
{
    Class1 sample = new Class1{ Server=prevForm.Server };
}

为此,您应该首先将结果或引用保留在某处,以便稍后可以访问

答案 3 :(得分:1)

对此的一个解决方案是将Calss1中的服务器属性声明为静态

class Class1
{
    public static string Server { get; set; }
}

这样你就可以在两种形式之间获得它的价值

private void setBtn_Click_1(object sender, EventArgs e)
{
    Class1.Server = serverTxt.Text;
}

private void setBtn_Click_1(object sender, EventArgs e)
{
    string serVer = Class1.Server;
}

仅当您有一个服务器用于Class1

的所有实例时才使用此选项

答案 4 :(得分:1)

您必须将表单1中的服务器Txt.Text的值设置为全局变量(最简单的方法)。然后只需在Form2中获取此全局变量的值

答案 5 :(得分:1)

您可以在Form2构造函数中发送相关数据并从Form1初始化它(在Form1中初始化Form2时传递数据)

[编辑] 您还可以通过保存该数据的数据库或使用两个表单都可以访问的外部文件来传递信息。