开发者

Passing data between two forms with properties [duplicate]

This question already has answers here: pass a value from one form to another (7 answers) Closed 4 years ago.

I am passing data between 2 windows forms in C#. Form1 is the main form, whose textbox will receive the text passed to it from form2_textbox & display it in its textbox (form1_textbox).

First, form1 opens, with an empty textbox and a button, on clicking on the form1_button, form2 opens. In Form2, I entered a text in form2_textbox & then clicked the button (form2_button).ON click event of this button, it will send the text to form1's textbox & form1 will come in focus with its empty form1_textbox with a text received from form2.

I am using properties to 开发者_如何学编程implement this task. FORM2.CS

public partial class Form2 : Form { //declare event in form 2 public event EventHandler SomeTextInSomeFormChanged;

public Form2()
{
    InitializeComponent();

}
public string get_text_for_Form1
{
    get { return form2_textBox1.Text; }
}

//On the button click event of form2, the text from form2 will be send to form1:

public void button1_Click(object sender, EventArgs e)
{
    Form1 f1 = new Form1();
    f1.set_text_in_Form1 = get_text_for_Form1;

//if subscribers exists
if(SomeTextInSomeFormChanged != null)
{
    SomeTextInSomeFormChanged(this, null);
}

}

}

FORM1.CS

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

    public string set_text_in_Form1
    {
        set { form1_textBox1.Text = value; }
    }

    private void form1_button1_Click(object sender, EventArgs e)
    {
        Form2 f2 = new Form2();
        f2.Show();
        f2.SomeTextInSomeFormChanged +=new EventHandler(f2_SomeTextInSomeFormChanged);  
    }

    //in form 1 subcribe to event
    Form2 form2 = new Form2();

    public void f2_SomeTextInSomeFormChanged(object sender, EventArgs e)
    {
        this.Focus();

    }
}


In form2 you need to create event and subscribe to it in form1. Thats all.

//declare event in form 2
public event EventHandler SomeTextInSomeFormChanged;

// call event in form2 text_changed event
if(SomeTextInSomeFormChanged != null)
   SomeTextInSomeFormChanged(this, null);

//in form 1 subcribe to event
var form2 = new Form2();
form2.SomeTextInSomeFormChanged += SomeHandlerInForm1WhereYouCanSetForcusInForm1

Update:

Form2:

public Form2()
{
    InitializeComponent();
}

public void button1_Click(object sender, EventArgs e)
{
//if subscribers exists
  if(SomeTextInSomeFormChanged != null)
  {
    SomeTextInSomeFormChanged(form2_textBox1, null);
  }
}

Form1:

public partial class Form1 : Form { 

   public Form1() { InitializeComponent(); }

    private void form1_button1_Click(object sender, EventArgs e)
    {
        Form2 f2 = new Form2();
        f2.Show();
        f2.SomeTextInSomeFormChanged +=new EventHandler(f2_SomeTextInSomeFormChanged);  
    }

    public void f2_SomeTextInSomeFormChanged(object sender, EventArgs e)
    {
        var textBoxFromForm2 = (TextBox)sender;
        form1_textBox1.Text =  textBoxFromForm2.Text
        this.Focus();
    }
}


The website listed below has very good tutorials. This particular page demonstrates how this can be achieved:

http://www.vcskicks.com/data-between-forms.php


What about this.

((Form2)Application.OpenForms["Form2"]).textBox1.Text = "My Message";
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜