Passing Values from one Form to another Form in a Button click

允我心安 提交于 2020-05-07 09:24:30

问题


These are my 2 Forms.

These are the codes for Form 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);
        }
    }
}

These are the codes for Form 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);
        }
    }
}

See the picture.You can understand the design.

This is what I want to do. 1st I open Form2 using button in Form1. Then I enter a text and click the button("Display in Form1 Textbox"). When it's clicked that value should be seen in the 3 Textboxes in Form1.I used Message Boxes to see if the values are passing or not. Values get passed from Form2 to Form1. But those values are not displays in those 3 Textboxes but the passed values are displayed in Message Boxes. Reason for the 3 Text Boxes can be understood by looking at the code. So what's the error?


回答1:


Actually I have an object to pass. So I did this

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:


I would simply pass it in the constructor. So, the code for form2, will be:

public partial class Form2 : Form
{
    string _input;

    public Form2()
    {
        InitializeComponent();
    }

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

        this.label1.Text = _input;
    }
}

And the call in Form1 will be:

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



回答3:


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;
    }


}

And code in form2

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

set modifier property of textbox1 and button1 to public




回答4:


Place a static string in your Form2

public static string s = string.Empty;

and, in your Display in Form1 Textbox button click event, get the value from the textbox in your string s:

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

once, the Form1 is showed up again, then in the Form1_Load event, just pass your Form2's text value to your Form1's textboxes, the value of which was gotten by the variable s:

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



来源:https://stackoverflow.com/questions/39026518/passing-values-from-one-form-to-another-form-in-a-button-click

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!