这是第一个表单(它包含一个OK按钮和一个文本框)
namespace Testt
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public int dimx;
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
this.Hide();
f2.ShowDialog();
this.Show();
dimx = int.Parse(textBox1.Text);
MessageBox.Show(dimx.ToString());
}
}
}
这是第二种形式(当按下OK时,它包含一个OK按钮+一个消息框)
namespace Testt
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form1 f=new Form1();
MessageBox.Show(f.dimx.ToString());
}
}
}
我想在文本框中输入6的值按OK,然后弹出form2,当我在第二个表单上按OK时,它应该显示6而不是0 ..我做错了什么?
答案 0 :(得分:1)
你可以这样做,以便你的表单将dimx作为变量,所以它看起来像这样
public partial class Form2 : Form
{
private int dimX;
public Form2(int dimx)
{
InitializeComponent();
dimX = dimx;
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(dimX.ToString());
}
}
或者你可以传递表单本身,改变
public Form2(int dimx)
到
public Form2(Form1 f1)
然后您还必须替换
private int dimX;
//and
dimX = dimx;
//and
MessageBox.Show(dimX.ToString());
带
private Form1 f;
//and
f = f1;
//and
MessageBox.Show(f.dimx.ToString());
答案 1 :(得分:0)
您正在每个 onclick 事件上创建一个新的表单对象,这不是它的工作方式......
private void button1_Click(object sender, EventArgs e)
{
Form1 f=new Form1(); // no that way!!!
MessageBox.Show(f.dimx.ToString());
}
使用回调,委托
答案 2 :(得分:0)
所以我现在正在使用
Form1中:
namespace Testt
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public int dimx;
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2(this);
this.Hide();
f2.ShowDialog();
this.Show();
dimx = int.Parse(textBox1.Text);
//MessageBox.Show(dimx.ToString());
}
}
}
和Form2:
namespace Testt
{
public partial class Form2 : Form
{
private Form1 f;
public Form2(Form1 f1)
{
InitializeComponent();
f=f1;
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(f.dimx.ToString());
}
}
}