该程序的目标是能够使用变量的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;
期间任何解决方案?
答案 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();
}
}
您希望在显示第二个表单之前传递数据,而不是在事实之后传递数据。