C# Acceder a un metodo de un Form desde otro Form diferente?

Hola, no encuentro cabida a mi duda en los foros disponibles, así que lo pongo por aquí.

Si necesitan moverlo, no hay problema ;)

La duda es sobre programación en C#.

Quisiera, desde un Form2.cs, acceder a los metodos de un Form1.

¿Es posible? ¿Cómo lo hago? Es para pasar el contenido de un TextBox de Form2 a Form1.

Un saludo y gracias de antemano.
Un Forma no es mas que una clase normal y corriente. Utiliza un método o una propiedad pública simplemente.
Sólo tienes que declarar el textBox del Form1 como público. Si estás usando el diseñador de Visual Studio, cambia la propiedad Modifiers del textBox y ponla como Public
La respuesta anterior es totalmente correcta, pero lo mas indicado es crear una propiedad para ese campo.

algo asi : public String TextoTextbox()
{
get
{
return textBox.text;
}

set
{
textBox.text = value;
}

Esto en el caso del textBox que comentas.
alsaan escribió:Sólo tienes que declarar el textBox del Form1 como público. Si estás usando el diseñador de Visual Studio, cambia la propiedad Modifiers del textBox y ponla como Public


Hombre, de esta manera te cargas la encapsulación. Mucho mejor usar una Propiedad publica, que estan justo para no tener que declarar atributos públicos, que es lo que le estas sugiriendo.

EDIT: Las propiedades no llevan lista de parametros. Sería algo así:

public String TextBoxText
{
    get { return textBox.text; }
    set { textBox.text = value; }
}
No he podido probar aún, porque no sé como implementarlo aún exactamente.

Desde Form1, por ejemplo, quiero acceder a lo que escriba en el Form3 al pulsar Aceptar.

¿Es posible también acceder desde Form3 a un método de Form1?

Un saludo y muchas gracias por responder!
Grothias escribió:No he podido probar aún, porque no sé como implementarlo aún exactamente.

Desde Form1, por ejemplo, quiero acceder a lo que escriba en el Form3 al pulsar Aceptar.

¿Es posible también acceder desde Form3 a un método de Form1?

Un saludo y muchas gracias por responder!

Sí, puesto que los form son clases. Desde cualquier otra clase puedes acceder a sus métodos y atributos públicos.
Creo recordar que en C# lo único que tienes que comprobar es que todas las clases pertenezcan al mismo namespace, pero si está todo del mismo proyecto el VS ya te crea el namespace por defecto.
La propiedad que te he puesto antes tiene que ir en la clase de la cual quieres leer/esribir. Desde el Form1 lo que tienes que hacer es llamar a esa propiedad desde una instancia de la clase: instanciaForm3.TextBoxText Para acceder a la instanceia de la clase depende de como tengas realizado el diseño. Yo siempre hago todos mis formularios singleton para poder acceder a ellos desde cualquier punto.
Hola, he estado probando y funciona, salvo que se envía la información ya sea pulsando Aceptar, Cancelar o Cerrar, ya que recojo el valor del TextBox desde Form1 al pulsar el botón que abre ese formulario donde escribo y pulso cualquiera de esos tres botones.

Gracias por responder.

Un saludo!

EDITO: Ya está todo arreglado y funcionando, muchas gracias a todos. Me ha servido sobre todo lo de declarar las variables y propiedades como públicas.

Saludos!
8 respuestas