如何将值从第一个表单传递给第二个表单messageBox?它会显示0

时间:2016-10-14 13:05:18

标签: c#

这是第一个表单(它包含一个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 ..我做错了什么?

3 个答案:

答案 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());
        }
    }
}