none
Pasar método de clase de un formulario a otro en donde el método contiene parámetros RRS feed

  • Pregunta

  • Hola que tal, soy nueva en esto, y a pesar que busqué y busqué, no logro encontrar esto.

    Tengo un proyecto con varias clases, utilizando herencias simples y composición, todo simple. Luego en una de las clases, tengo declarada una lista donde hago métodos para manipularla (es una lista genérica, no un array). Uno de éstos métodos debe devolver otra lista en donde se consulta por un string (valor que entra por parámetro a esta función), en este ejemplo todos los laboratorios de varios que se van agregando. En el form 1 yo hago la carga de datos, y también en el form 1 hago la búsqueda mediante un textbox que recoge esa cadena de caracteres. Yo logro sin problemas mostrar la lista en un datagrid colocado en el form2. Pero cuando necesito ver la lista utilizando un método que recibe por parámetro un string del form 1, no sé donde colocar los parámetros, lo intenté de varias maneras en el constructor del form 2, pero no me sale.

    Si podrían ayudarme les agradeceré!!

    Saludos,  VeroMDP!

    domingo, 3 de agosto de 2014 22:57

Respuestas

  • Hola Luis, ya un compañero ayer logró ayudarme, el problema era que el constructor del form, no recibía correctamente los parámetros.
    Acá debajo pego el código, si no puede hacerse acá, por favor háganmelo saber.
    //código del FORM1

    //Botón que abre el formulario 2 (acá denominado Consultas)
            private void btnLaboratorio_Click(object sender, EventArgs e)
            {

                Consultas frmConsultas = new Consultas(listaFarmacia,txtConsulta.Text);
                frmConsultas.ShowDialog();

            }

    //Código del  FORM2
    //ESTE ES EL FORM 2, SE LLAMA CONSULTA
        public partial class Consultas : Form
        {

            Farmacia oFarma;//clase donde esta la lista
            string nuevoString;
            
            //constructor del form2, (consultas), recibe la lista y el string
            // esto es lo que estaba mal
            public Consultas(Farmacia lista, string laboratorio)
            {
                InitializeComponent();

                oFarma = lista;
                this.nuevoString = laboratorio;
            }

            private void Consultas_Load(object sender, EventArgs e)
            {
              //acá se utiliza un dataGrid(dgDatos) se utiliza un binding para enlazar (bdgLaboratorio)
                dgDatos.DataSource = bdgLaboratorio;
                bdgLaboratorio.DataSource = oFarma.medicamXLaboratorio(nuevoString);//nuevoString representa a txtConsulta.Text del form1
            }
        }

    Espero se entienda el código, muchas gracias Luis. Podemos darlo por cerrado.

    Un abrazo, desde Argentina.

    martes, 5 de agosto de 2014 17:45

Todas las respuestas

  • Hola Vero:

     No se si entendí bien lo que deseas pero para pasar parámetros a un Form bien podrías crear unas propiedades publicas en el mismo o bien como lo estas haciendo sobrecargando el constructor del Form, en teoría ambos deberían de funcionar por lo que desconozco porque a ti no te funciona la sobrecarga del constructor posiblemente no estés aterrizando el valor a una variable local privada (estoy especulando)...


    Saludos desde Monterrey, Nuevo León, México!!!

    lunes, 4 de agosto de 2014 19:36
  • Hola Luis, ya un compañero ayer logró ayudarme, el problema era que el constructor del form, no recibía correctamente los parámetros.
    Acá debajo pego el código, si no puede hacerse acá, por favor háganmelo saber.
    //código del FORM1

    //Botón que abre el formulario 2 (acá denominado Consultas)
            private void btnLaboratorio_Click(object sender, EventArgs e)
            {

                Consultas frmConsultas = new Consultas(listaFarmacia,txtConsulta.Text);
                frmConsultas.ShowDialog();

            }

    //Código del  FORM2
    //ESTE ES EL FORM 2, SE LLAMA CONSULTA
        public partial class Consultas : Form
        {

            Farmacia oFarma;//clase donde esta la lista
            string nuevoString;
            
            //constructor del form2, (consultas), recibe la lista y el string
            // esto es lo que estaba mal
            public Consultas(Farmacia lista, string laboratorio)
            {
                InitializeComponent();

                oFarma = lista;
                this.nuevoString = laboratorio;
            }

            private void Consultas_Load(object sender, EventArgs e)
            {
              //acá se utiliza un dataGrid(dgDatos) se utiliza un binding para enlazar (bdgLaboratorio)
                dgDatos.DataSource = bdgLaboratorio;
                bdgLaboratorio.DataSource = oFarma.medicamXLaboratorio(nuevoString);//nuevoString representa a txtConsulta.Text del form1
            }
        }

    Espero se entienda el código, muchas gracias Luis. Podemos darlo por cerrado.

    Un abrazo, desde Argentina.

    martes, 5 de agosto de 2014 17:45