Enviar valores de un formulario a otro formulario
Quiero pasar valores entre dos formularios (c#). ¿Cómo puedo hacerlo?
Tengo dos formularios: Form1 y Form2.
Form1 contiene un botón. Cuando hago clic en ese botón, Form2 debería abrirse y Form1 debería estar en modo inactivo (es decir, no seleccionable).
Form2 contiene un cuadro de texto y un botón de envío. Cuando escribo cualquier mensaje en el cuadro de texto de Form2 y hago clic en el botón enviar, Form2 debería cerrarse y Form1 debería resaltarse con el valor enviado.
¿Cómo puedo hacerlo? ¿Alguien puede ayudarme a hacer esto con un ejemplo sencillo?
Hay varias soluciones para esto, pero este es el patrón que suelo usar.
// Form 1
// inside the button click event
using(Form2 form2 = new Form2())
{
if(form2.ShowDialog() == DialogResult.OK)
{
someControlOnForm1.Text = form2.TheValue;
}
}
Y...
// Inside Form2
// Create a public property to serve the value
public string TheValue
{
get { return someTextBoxOnForm2.Text; }
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2(textBox1.Text);
frm2.Show();
}
public Form2(string qs)
{
InitializeComponent();
textBox1.Text = qs;
}
Definir una propiedad
public static class ControlID {
public static string TextData { get; set; }
}
En elForm1
private void button1_Click(object sender, EventArgs e)
{
ControlID.TextData = txtTextData.Text;
}
Obtener los datos Form1
yForm2
private void button1_Click(object sender, EventArgs e)
{
string text= ControlID.TextData;
}
Después de una serie de luchas para pasar los datos de un formulario a otro, finalmente encontré una respuesta estable. Funciona a las mil maravillas.
Todo lo que necesita hacer es declarar una variable public static datatype 'variableName'
en un formulario y asignar el valor a esta variable que desea pasar a otro formulario y llamar a esta variable en otro formulario usando directamente el nombre del formulario ( no cree un objeto de este formulario como Se puede acceder a las variables estáticas directamente ) y acceder al valor de esta variable.
Ejemplo de ello es,
Formulario 1
public static int quantity;
quantity=TextBox1.text; \\Value which you want to pass
Formulario2
TextBox2.Text=Form1.quantity;\\ Data will be placed in TextBox2
Declarar una cadena pública enform1
public string getdata;
en el botón deform1
form2 frm= new form2();
this.hide();
form2.show();
Para enviarle datos, form1
puede probar cualquier evento y código siguiente en ese evento.
form1 frm= new form1();
form1.getdata="some string to be sent to form1";
Ahora, después de cerrar form2
y abrir form1
, puede usar los datos devueltos en getdata
una cadena.