Haber, la parte teórica creo que ya es conocida por todos y que ni leendo 3 veces te queda la idea clara bien, vamos al meollo del asunto.
SOLUCION : (paso a paso) te va a funcionar :-)
1.- Iniciamos Visual Studio, click File >> New >> Project >> Visual C# (Izquierda) >> Windows Forms Applications.
Name : w01
Location: C:\practica (una carpeta cualquiera)
Click en OK!
2.- Por Defecto tenemos un Form1, necesitamos otro formulario (Form2); Menu Project >> Add Windows Form >> Click Botón Add.
3.- Diseño del Formulario 1 (Form1)
Botón:
Name : btnMostrar
text : Form2
4.- Diseño del Formulario 2 (Form2)
Controles
Label1 :
Text: Ingrese Titulo para Form1
TexBox1:
Name: txtTitulo
Button:
Name: btnEnviar
Text: Enviar
5.- En el Form2 creamos el Evento y Delegado.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace w01
{
public partial class Form2 : Form
{
// Delegado
public delegate void DelegadoTitulo(string mensaje);
//Evento
public event DelegadoTitulo MiEvento;
public Form2()
{
InitializeComponent();
}
private void btnEnviar_Click(object sender, EventArgs e)
{
// Al evento Click del Boton invocamos el Evento y pasamos el TEXTO
this.MiEvento(txtTitulo.Text);
}
}
}
6.- Ahora en el Form1 recibimos el parámetro y hacemos que se ejecute nuestro método ()
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace w01
{
public partial class Form1 : Form
{
// Instanciamos un objeto de FORM2
Form2 formulario = new Form2();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//Invocamos al Evento
//PonerTitulo es un método
formulario.MiEvento += new Form2.DelegadoTitulo(PonerTitulo);
}
//Metodo de Form1 que pondrá el titulo al Form
void PonerTitulo(string mensaje)
{
this.Text = mensaje;
}
private void btnMostrar_Click(object sender, EventArgs e)
{
// Mostrar formulario (objeto de Form2)
formulario.Show();
}
}
}
7.- Ejecutando
Espero que les ayude ...
7 comentarios:
Hola, esta muy bueno el ejemplo, tengo una pregunta, se podria crear un delegado tambien en form2 para cambiar el titulo a form1... le agradezco si me ayuda con esta duda.
no se entendio nada
Nesecito leer un dato ingresado en el textbox del formulario de origen a otro formulario no se si pueda ser algo similar SOS
Me parece un ejemplo muy clarificador, enhorabuena y mil gracias!
Hey Excelente!!! funciono exacto lo que necesitaba 1000 gracias!!!
Solo una pregunta cuando cierro el form2 e intento abrirlo de nuevo me da error.
me dice que no se puede tener acceso al objeto eliminado.
Como se puede solucionar ese error?
Ya pude solucionar el problema para que al cerrar el formulario y volverlo a abrir se pueda seguir enviando informacion.
La solucion es poner en el botonEnviar del Form1 el codigo para instanciar el form2 y para agregar el evento.
private void btnMostrar_Click(object sender, EventArgs e)
{
form2 formulario = new form2();
formulario.MiEvento += new form2.DelegadoTitulo(PonerTitulo);
// Mostrar formulario (objeto de Form2)
formulario.Show();
}
TA que chevere tio me salvastes de una gran craneada que tenia que pensar me la isistes mas facil me sirvio de mucho chevere tu ayuda gracias sigue aportando asi mas ..!
Publicar un comentario