none
Pasar un objeto como parámetro en C# RRS feed

  • Pregunta

  • Hola a todos,

    Estoy haciendo un formulario de una aplicación para escritorio en C#. En una ventana principal ingreso un código, el cual valido. En caso de ser correcto, paso a otra ventana en donde comienzo a llevar un formulario. Mi problema es que, al momento de ingresar el código en la primera ventana, instancio una clase y le doy el código como valor de un atributo., Luego para pasar a la ventana del formulario, quiero pasar como parametro el objeto recién instanciado, sin embargo, me arroja error.

    ¿Qué solución se puede dar a este problema? Y lo otro, ¿Se puede realmente hacer aquello?

    Pongo acá, el código constructor de la clase del formulario:

    public formularioRegistro(Clase instancia){

         InitializeComponent();

         this.instancia = instancia;

    }

    Gracias,

    Saludos!

    • Cambiado webJose lunes, 5 de noviembre de 2012 1:55 (De:Lenguaje C#)
    sábado, 3 de noviembre de 2012 0:34

Todas las respuestas

  • Que error te arroja y porque instancias tu clase en InitializeComponent(); si me imagino que eso deberia ir en el boton que utilizas/

    Si mi respuesta te ha ayudado a resolver tus problemas, Selecciona "Proponer como respuesta"

    Blog
    J.Joaquin

    sábado, 3 de noviembre de 2012 1:00
  • no crees que en lugar de decir "me arroja error" ayudaria mas que menciones que error se produce su mensaje y en que lugar marca el problema

    en principio no veo nada incorrecto


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    sábado, 3 de noviembre de 2012 1:36
  • Hola.

    Sí, tienes razón. Expliqué el problema de manera muy superficial.

    Bueno, sucede que en un archivo .xaml, yo ingresaba un código, el cual lo validaba. De estar correcto, instanciaba una clase en donde al constructor le daba como parámetro el código validado. Luego, se abre otro archivo .xaml en donde hay un formulario. En dicho formulario, yo ingreso los valores del resto de los atributos del objeto. Entonces, al momento de inicializar la ventana del formulario, le paso como parámetro, el objeto. En ese punto, el Visual Studio 2010 me marcaba justo la línea en donde el constructor de la ventana del formulario recibe el objeto como parámetro.

    El error me dice que el objeto no es accesible.

    Finalmente, opté por pasarle directamente el código como parámetro, y dentro del mismo formulario, instanciar el objeto junto a todos los otros valores de atributos que ingreso en el mismo formulario.

    Saludos.

    sábado, 3 de noviembre de 2012 5:09
  • o sea lo que hacias es pasar de un window de WPF la instancia de una misma clase que habais creado previamente

    es raro que mencione "el objeto no es accesible." salvo que lo hayas declarado como privado al primer form

    o sea no tenias esta clase creada en un .cs independiente definido como

    public class NombreClass{

    }

    es importante definir que sea public

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    sábado, 3 de noviembre de 2012 9:22
  • Deberías poner el código para ver cómo pasas el parámetro al formulario... Se un poco más explícito para poder ayudarte... No debe haber ningún problema para pasar el objeto recien creado a donde sea...

    @XaviPaper
    http://geeks.ms/blogs/xavipaper

    sábado, 3 de noviembre de 2012 15:30
  • Hola Leandro,

    En el primer Form, en donde recibo un código que valido, instancio una clase que dicho código. Y dicha clase fue declarada como public.

    Luego, desde el primer Form, voy a otro Form, y en el constructor de este último, paso como parámetro el objeto recién instanciado con el código.

    Eso es lo que intentaba hacer. Me había fijado que nada estuviera como privado, y de hecho nada estaba como tal. Sin embargo, en la descrición del error, decía lo que comente anteriormente.

    Saludos.

    sábado, 3 de noviembre de 2012 20:33
  • Hola; Sí, de hecho así lo estaba intentando:

    Cuando recibía, y validaba el código, hacía esto: Clase_A instancia_A = Clase_A(codigo);

    Luego, cuando instanciaba el segundo Form, hacia esto, Clase_Form formulario = Clase_Form(instancia_A);

    El constructor de Clase_Form entonces quedaba:

    public Clase_Form(Clase_A instancia_A){ initializeComponent(); nuevaInstancia_Clase_A = instancia_A; }

    Eso era lo que intentaba de hacer.

    Saludos.
    sábado, 3 de noviembre de 2012 20:39
  • si haces un Rebuild de la solucion sigue marcando el mismo error ?

    Cuando recibía, y validaba el código, hacía esto: Clase_A instancia_A = Clase_A(codigo);

    de que tipo es "codigo" ? porque si es uan clase ojo porque tambein debes declararla como public


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    sábado, 3 de noviembre de 2012 21:09
  • En la instanciación supongo que no habrás copiado bien el código y tengas un new

    Clase_A instancia_A = new Clase_A(codigo);
    ...
    Clase_Form formulario = new Clase_Form(instancia_A);

    Por otro lado, ¿tienes las clases Clase_Form y ClaseA en el mismo proyecto?


    @XaviPaper
    http://geeks.ms/blogs/xavipaper

    sábado, 3 de noviembre de 2012 22:16