获取/设置变量

时间:2015-03-11 19:37:38

标签: c#

该程序的目标是能够使用变量的get和set方法。

我在项目C#中有这段代码:

Form1中:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
    private int c = 0;
    public int a { get; set; }
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        a = 5;
        Form2 f2 = new Form2();
        f2.b = a;
        f2.Show();
    }
}
}

并在Form2中:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

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

    private void button1_Click(object sender, EventArgs e)
    {
        Form1 f1 = new Form1();



        MessageBox.Show(Convert.ToString(b));
    }
}
}

此代码不起作用,因为b的值应为5,但在执行值0;

期间

任何解决方案?

2 个答案:

答案 0 :(得分:1)

您不能指望一个实例的值会神奇地传播到每个其他实例。

这样做:

Form1 f1 = new Form1();
int b = f1.a;

始终将为0.您创建了一个新实例,但没有发生任何事情!如果你想获得现有的表单的值(可能会点击按钮),你需要以某种方式将它传递给Form2。

你可以:

  • 将其传递给Form2
  • 的构造函数
  • 设置保存数据的服务
  • 可能还有大约一百万种其他方法

答案 1 :(得分:0)

private void button1_Click(object sender, EventArgs e)
{
    a = 5;
    Form2 f2 = new Form2();
    f2.b=a;
    f2.Show();
}

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

您希望在显示第二个表单之前传递数据,而不是在事实之后传递数据。