在按钮单击中将值从一个表单传递到另一个表单

时间:2016-08-18 19:55:09

标签: c# winforms parameter-passing

这是我的2张表格。 enter image description here

这些是表格1的代码 - >

namespace Passing_Values
{
    public partial class Form1 : Form
    {
        string a="preset value";
        public Form1()
        {
            InitializeComponent();
        }

        private void btnOpenF2_Click(object sender, EventArgs e)
        {
            new Form2().Show();
        }

        public void set(string p)
        {
            MessageBox.Show("This is Entered text in Form 2 " + p);
            a = p;
            MessageBox.Show("a=p done! and P is: " + p + "---and a is: " + a);
            textBox1.Text = "Test 1";
            textBox2.Text = a;
            textBox3.Text = p;

        }

        private void button2_Click(object sender, EventArgs e)
        {
            MessageBox.Show(a);
        }
    }
}

这些是表格2的代码 - >

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

        private void button1_Click(object sender, EventArgs e)
        {
            string g;
            g = textBox1.Text;

            Form1 j = new Form1();
            j.set(g);
        }
    }
}

见图。你可以理解设计。

这就是我想要做的。首先,我使用Form1中的按钮打开Form2。然后我输入一个文本并单击按钮("在Form1文本框中显示")。单击该值时,应在Form1的3个文本框中看到该值。我使用消息框来查看值是否正在传递。值从Form2传递到Form1。但是这些值不会显示在这3个文本框中,但传递的值显示在消息框中。通过查看代码可以理解3个文本框的原因。那么错误是什么?

4 个答案:

答案 0 :(得分:1)

我只是在构造函数中传递它。 因此,form2的代码将是:

public partial class Form2 : Form
{
    string _input;

    public Form2()
    {
        InitializeComponent();
    }

    public Form2(string input)
    {
        _input = input;
        InitializeComponent();

        this.label1.Text = _input;
    }
}

Form1中的调用将是:

private void button1_Click(object sender, EventArgs e)
{
    fm2 = new Form2(this.textBox1.Text.ToString());
    fm2.Show();
}

答案 1 :(得分:1)

实际上我有一个要通过的对象。所以我做了这个

in form1 - >

private void btnOpenF2_Click(object sender, EventArgs e)
        {
            new Form2(this).Show();
        }

in form2 - >

public partial class Form2 : Form
    {
        Form1 a;
        public Form2(Form1 b)
        {
            a = b;
            InitializeComponent();

        }
        private void button1_Click(object sender, EventArgs e)
        {
            string g;
            g = textBox1.Text;


            a.set(g);
            this.Close();
        }
    }

答案 2 :(得分:0)

Form2

中放置静态字符串
public static string s = string.Empty;

并且,在在Form1文本框中显示按钮单击事件中,从字符串s中的文本框中获取值:

s = textBox1.Text;
Form1 f1 = new Form1();
f1.Show();

一次,Form1再次出现,然后在Form1_Load事件中,只需将Form2的文字值传递到Form1的文本框即可其值由变量s获得:

foreach (Control text in Controls)
{
    if (text is TextBox)
    {
        ((TextBox)text).Text = Form2.s;
    }
}

Display

答案 3 :(得分:0)

enter image description here

public partial class Form1 : Form
{
    Form2 fm2;
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        fm2 = new Form2();
        fm2.Show();
        fm2.button1.Click += new EventHandler(fm2button1_Click);
    }
    private void fm2button1_Click(object sender, EventArgs e)
    {
        textBox1.Text = fm2.textBox1.Text;
    }


}

表格2中的代码

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

textbox1 button1 的修饰符属性设置为public