使用按钮在表单之间传递变量

时间:2014-08-20 21:13:43

标签: c# winforms

我想知道如何从form1到form2传递,比如说一个整数。

我尝试通过一个打开form2的按钮来做到这一点,但点击事件按钮时无法识别整数...我该怎么办?

在form1中我有整数x,我希望当我点击button1时,form2会在标签中打开x值。

如果有一种方法可以在没有按钮的情况下传递信息(那么我可以使用按钮来打开form2),这也很棒。

3 个答案:

答案 0 :(得分:2)

你可以使用第二种形式构造函数。

    private int input;
    public Form2(int input)
    {
        this.input = input;
        InitializeComponent();
    }

创建对象时,可以传递var(int in here):

        int myvar=911;
        Form2 tmp = new Form2(myvar);
        tmp.Show();

现在您可以在form2中使用该私有变量:

lbl.Text=input.toString();

Form1中的

private void button1_Click(object sender, EventArgs e)
    {
        Form2 tmp = new Form2(911);
        tmp.Show();
    }

并在Form2中:

    public Form2(int input)
    {
        InitializeComponent();
        label1.Text = input.ToString();
    }

发送你的代码来解决这个问题。我无法找到没有你的代码就无法识别你的代码的原因!

答案 1 :(得分:1)

在您的代码中,两个表单都可以访问变量。例如,创建一个新的命名空间并在其中添加public static class FormData public static int Value

namespace GlobalVariables
{
  public static class FormData
  {
    public static int Value { get; set; }
  }
}

然后,从两个表单中,您都可以使用GlobalVariables.FormData.Value访问所述变量(并对其进行修改)。在这里,我把它变成了一个属性,但你可以随心所欲地做任何事情。

答案 2 :(得分:1)

除了通过Form2构造函数传递值之外,您还可以创建一个设置标签值的属性,例如

窗体2

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

    public int XValue{
        set{
            label1.Text = value.ToString(); 
        }
    }
}

Form1中

    public partial class Form1 : Form
{
    private int x = 10;

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 form2 = new Form2();
        form2.XValue = x;
        form2.Show();
    }
}