Test Foro de elhacker.net SMF 2.1

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 (csharp) [Seleccionar]
class Window1
{
    private Window2 window2;
    // ...
}

class Window2
{
    public string Mensaje { get; set; }
    // ...
}


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 (csharp) [Seleccionar]
window2 .Mensaje = "Nuevo mensaje";

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

Código (csharp) [Seleccionar]
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 (csharp) [Seleccionar]
class Window2
{
    private string _mensaje;
    public Window2 (string mensaje) : this ()
    {
        // haz lo que quieras con tu mensaje
    }
    // ...
}


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