none
Inconvenientes al recuperar los datos enviado a un List<string> perteneciente a una clase RRS feed

  • Pregunta

  • Saludos Amigos del Foro,

    Tengo esta situación que no comprendo. En mi aplicación tengo múltiples formularios varios de ellos con datos capturados en textbox, estos datos los agrego en un elemento List<string> y lo envío a un elemento list<string> en una clase creada para contener los datos y luego poder hacer uso de ellos en otros formularios. El asunto es que los datos se envían adecuadamente a la clase, sin embargo, cuando intento recuperarlos desde otro formulario, es como si no existieran. Tanto el envío a la clase como la recuperación lo hago mediante instancia a esa clase.

    Agradezco de antemano su ayuda.


    MLiranzo

    viernes, 6 de diciembre de 2019 20:03

Respuestas

  • Hola M Liranzo

    Si tenes un objeto de la clase que sea (en tu caso la que contiene el List<string>) como miembro de otra clase o como variable local, no podes acceder a ese objeto desde otra clase. Cada Form es una clase diferente. Si instancias otro objeto de la primer clase mencionada, en otra clase, obviamente no contendrá los datos que el primer objeto mencionado. Cada instancia crea un objeto nuevo con datos vacíos o con datos por omisión del método constructor pero en un objeto nuevo. 

    Lo que tendrías que hacer, entonces, es declarar el objeto de la clase que contiene el List<string> como miembro público del Form principal (el padre de todos los demás), y cada vez que creas un Form hijo, al mostrarlo con su método ShowDialog(), le pasas una referencia al Form padre, que como estás en él mismo, se escribe this (en inglés: "este"), así:

    formHijo.ShowDialog(this);

    Luego, para acceder al objeto en los Form hijos, en los mismos, utilizas su propiedad Owner ("propietario"), que es una referencia al Form padre, así:

    FormPadre owner = (FormPadre)this.Owner;

    owner.objeto.list.Add("hola"); 

    string item = owner.objeto.list[0];

    Saludos

    Pablo

    • Marcado como respuesta MLiranzo domingo, 8 de diciembre de 2019 5:49
    sábado, 7 de diciembre de 2019 0:13

Todas las respuestas

  • Hola   MLiranzo

     

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma,  te comento que para  que la comunidad de foros te pueda asesorar mejor, es necesario que nos compartas el form/code que estás desarrollando

     

     

    Gracias por usar los foros de MSDN.

     

    Pablo Rubio

     ____

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    viernes, 6 de diciembre de 2019 22:31
    Moderador
  • Hola M Liranzo

    Si tenes un objeto de la clase que sea (en tu caso la que contiene el List<string>) como miembro de otra clase o como variable local, no podes acceder a ese objeto desde otra clase. Cada Form es una clase diferente. Si instancias otro objeto de la primer clase mencionada, en otra clase, obviamente no contendrá los datos que el primer objeto mencionado. Cada instancia crea un objeto nuevo con datos vacíos o con datos por omisión del método constructor pero en un objeto nuevo. 

    Lo que tendrías que hacer, entonces, es declarar el objeto de la clase que contiene el List<string> como miembro público del Form principal (el padre de todos los demás), y cada vez que creas un Form hijo, al mostrarlo con su método ShowDialog(), le pasas una referencia al Form padre, que como estás en él mismo, se escribe this (en inglés: "este"), así:

    formHijo.ShowDialog(this);

    Luego, para acceder al objeto en los Form hijos, en los mismos, utilizas su propiedad Owner ("propietario"), que es una referencia al Form padre, así:

    FormPadre owner = (FormPadre)this.Owner;

    owner.objeto.list.Add("hola"); 

    string item = owner.objeto.list[0];

    Saludos

    Pablo

    • Marcado como respuesta MLiranzo domingo, 8 de diciembre de 2019 5:49
    sábado, 7 de diciembre de 2019 0:13
  • Gracias Sr. Tigre Pablito, el planteamiento de su solución a mi problema fue correcta.

    Atte. M Liranzo.


    MLiranzo

    domingo, 8 de diciembre de 2019 5:53