Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: MTH1695 en 30 Agosto 2019, 03:33 am



Título: Enviar mensaje de una ventana a otra en C# Visual Studio
Publicado por: MTH1695 en 30 Agosto 2019, 03:33 am
Buenas noches, quisiera saber cómo puedo enviar un mensaje de un TextBox desde mi ventana 1 a otro TextBox de mi ventana 2 haciendo click en un botón. Estoy programando en Visual Studio. WPF. c#.

Usando la siguiente programación logré enviar el mensaje, pero al hacerlo con "Show" se genera nuevamente la ventana 2 y yo lo que busco es que se imprimar sin necesidad de abrir la ventana nuevamente.

        private void Enviar1_Click(object sender, RoutedEventArgs e)
        {
            Window1 f1 = new Window1();
            f1.Nombre1.Text = Equipo1.Text;
            f1.Show();
        }

Nota: "Nombre1" y "Equipo1" son los nombres de los dos TextBox.

Gracias!


Título: Re: Enviar mensaje de una ventana a otra en C# Visual Studio
Publicado por: ThunderCls en 16 Octubre 2019, 20:17 pm
Estas creando un nuevo objeto de Window1 cada vez que envias el mensaje, lo que hace que se cree una nueva ventana. Para pasar "datos" de un formulario (clase) a otro tienes varios metodos:

1- Simplemente create un property en Window2 (clase 2) y relaciona las clases con una variable en Window1 (clase 1) que contenga la instancia de Window2 (clase 2) para que puedas acceder al objeto y sus metodos.

Código
  1. class Window1
  2. {
  3.    private Window2 window2;
  4.    // ...
  5. }
  6.  
  7. class Window2
  8. {
  9.    public string Mensaje { get; set; }
  10.    // ...
  11. }

Cuando vayas a crear una instancia de Window2 desde Window1 recuerda guardar la referencia en tu variable window2. Luego desde Window1 cuando necesites modificar el mensaje solo necesitas usar tu instancia e invocar el atributo de Window2

Código
  1. window2 .Mensaje = "Nuevo mensaje";

Y luego desde Window2 solo necesitas asignar dicho atributo a tu control cada vez que lo desees

Código
  1. Textbox1.Text = Mensaje;

2- Una segunda opcion pudiera tambien ser que simplemente te crees una version del constructor de tu Window2 con los parametros adicionales que desees

Código
  1. class Window2
  2. {
  3.    private string _mensaje;
  4.    public Window2 (string mensaje) : this ()
  5.    {
  6.        // haz lo que quieras con tu mensaje
  7.    }
  8.    // ...
  9. }

3- Create variables publicas/estaticas en tu Window1 y accedelas desde Windows2 cada vez que desees