我如何将值从第一个表单传递到第二个表单messageBox ?它会显示为0
本文关键字:表单 messageBox 第二个 显示 第一个 | 更新日期: 2023-09-27 18:13:15
这是第一个表单(包含一个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..我做错了什么?
你可以让你的表单把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());
您正在创建一个新的窗体对象在每个onclick事件,这不是它的工作方式…
private void button1_Click(object sender, EventArgs e)
{
Form1 f=new Form1(); // no that way!!!
MessageBox.Show(f.dimx.ToString());
}
使用回调,delegate
我现在使用这个
中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());
}
}
}