otro - pasar objeto entre formularios c#
Pasar datos entre dos formularios con propiedades (3)
Paso datos entre 2 formularios de Windows en C #. Form1 es el formulario principal, cuyo cuadro de texto recibirá el texto que se le pasó desde form2_textbox y lo mostrará en su cuadro de texto (form1_textbox).
Primero, se abre form1, con un cuadro de texto vacío y un botón, al hacer clic en form1_button, se abre form2. En Form2, ingresé un texto en form2_textbox y luego hice clic en el botón (form2_button) .ON clic evento de este botón, enviará el texto al cuadro de texto de form1 y form1 se enfocará con su form1_textbox vacío con un texto recibido de form2.
Estoy usando propiedades para implementar esta tarea. FORM2.CS
clase parcial pública Form2: Formulario {// declara el evento en el formulario 2 evento público 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();
}
}
¿Qué tal esto?
((Form2)Application.OpenForms["Form2"]).textBox1.Text = "My Message";
El sitio web enumerado a continuación tiene muy buenos tutoriales. Esta página en particular demuestra cómo se puede lograr esto:
En form2 necesitas crear un evento y suscribirte a él en form1. Eso es todo.
//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
Actualizar:
Form2:
public Form2()
{
InitializeComponent();
}
public void button1_Click(object sender, EventArgs e)
{
//if subscribers exists
if(SomeTextInSomeFormChanged != null)
{
SomeTextInSomeFormChanged(form2_textBox1, null);
}
}
Formulario 1:
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();
}
}