PDA

Ver la Versión Completa : Pasar texto desde una forma a otra con C#


egostar
05-05-2006, 01:26:19
Estoy haciendo un programa el cual manda llamar a una Forma2 al presionar un botón en una Forma1 y necesito que un texto de la Forma2 sea pasado a la Forma1.

¿Alguno de ustedes sabe como hacer esto?, en Delphi es muy fácil pero en C# no encuentro la manera de hacerlo.

Saludos.

dec
05-05-2006, 04:25:44
Hola,

Puedes utilizar una variable estática en el primer formulario, de forma que puedas acceder a ella desde el segundo formulario. Esto es algo así:


// Código del primer formulario

using System;
using System.Windows.Forms;

namespace WindowsApplication1
{
public partial class Form1 : Form
{
public static Form1 Formulario1 = null;

public Form1()
{
InitializeComponent();
Formulario1 = this;
}

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

private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
Formulario1.Dispose();
}
}
}

// Código del segundo formulario

using System;
using System.Windows.Forms;

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

private void button1_Click(object sender, EventArgs e)
{
Form1.Formulario1.Text = "Hola, qué tal";
}
}
}


No sé porqué me ha dado por añadir una variable estática del mismo tipo que el primer formulario, y de asignarle una referencia a la instancia de este: he debido pensar que querías hacer un poco lo que ve arriba: "pasar un texto desde el segundo formulario al primero, en una de las propiedades del primero, en este caso Text, que juega el papel de la propiedad Caption en Delphi.

Lo digo porque se me ocurre que igual que de ese tipo podría ser de cualquier otro, por ejemplo String, y guardar ahí el texto que pasa el segundo formulario al primero y luego tú hacer uso de ese texto en donde y como mejor te parezca.

De todos modos es muy probable que existan otras formas de hacer lo que planteas. ;)

egostar
05-05-2006, 05:51:38
Muchas gracias Dec.

El código me funcionó de maravilla, nadamas tuve un pequeño problema ya que el valor de la variable estática no es modificada cuando presionaba el botón del segundo Form, me mostraba "Edit Serial Parameters" en lugar de lo que yo habia seleccionado en el Form2, coloque un MessageBox para saber que tenía esa variable y se mostró el MessageBox antes de abrir la forma2 por lo que probé con el evento ShowDialog.


private void button5_Click(object sender, System.EventArgs e)
{
Form CaracteresFin = new Fascii();
CaracteresFin.ShowDialog();
textBox2.Text = textASCII.Text;
}


De esta manera esperó a que se cerrara la Forma2 y me regresó el valor que había seleccionado.

Saludos y gracias