No puedo agregar a un listbox desde otro formulario

Iniciado por SeniorX, 29 Octubre 2006, 00:02 AM

0 Miembros y 1 Visitante están viendo este tema.

SeniorX

Hola a todos... bueno estoy ayudando a un amigo a hacer una tarea de programacion para la universidad... se trata de hacer una agenda muy basica, con un listbox.
Te pasan una clase que se llama Nombre:
using System.ComponentModel;
using System.Data;
using System.Windows.Forms;
using System.Collections;
using System.Drawing;
using System.Drawing.Design;
using System.Drawing.Drawing2D;
using System.Drawing.Text;
using Agenda;

namespace TAREA_06
{
    public class Entrada
    {
        private string nombre = "";
        private string apellido = "";
        private string telefono = "";
        private string cedula = "";
        private string direccion = "";
        private long id = 0;
        Editor ent = new Editor();

        public string Nombre
        {
            get
            {
                return this.nombre;
            }
        }
        public string Apellido
        {
            get
            {
                return this.apellido;
            }
        }
        public string Telefono
        {
            get
            {
                return this.telefono;
            }
        }
        public string Direccion
        {
            get
            {
                return this.direccion;
            }
        }
        public string Cedula
        {
            get
            {
                return this.cedula;
            }
        }
        public long Id
        {
            get
            {
                return this.id;
            }
        }
        public string Titulo
        {
            get
            {
                return this.ToString();
            }
        }

        public Entrada(Editor vent, string nom, string ape, string tel, string dir, string rut)
        {
            this.id = vent.Cuenta;
            this.nombre = nom;
            this.apellido = ape;
            this.telefono = tel;
            this.cedula = rut;
            this.direccion = dir;
        }

        public Entrada(Editor ent)
        {
            this.id = ent.Id;
            this.nombre = ent.Nombre;
            this.apellido = ent.Apellido;
            this.telefono = ent.Telefono;
            this.cedula = ent.Cedula;
            this.direccion = ent.Direccion;
        }

        public static bool operator !=(Entrada a, Entrada b)
        {
            return (a == b) == false;
        }

        public static bool operator ==(Entrada a, Entrada b)
        {
            if ((object)a == null && (object)b == null)
            {
                return true;
            }
            else if ((object)a == null)
            {
                return false;
            }
            else if ((object)b == null)
            {
                return false;
            }
            else if (a.GetType().ToString() == b.GetType().ToString())
            {
                if (a.Apellido == b.Apellido && a.Nombre == b.Nombre && a.Telefono == b.Telefono && a.Direccion == b.Direccion && a.Cedula == b.Cedula && a.Id == b.Id)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }

        public override bool Equals(object obj)
        {
            return base.Equals(obj);
        }

        public override int GetHashCode()
        {
            return base.GetHashCode();
        }

        public override string ToString()
        {
            return this.Apellido.ToUpper() + ", " + this.Nombre + ", RUT:" + this.Cedula;
        }

    }
}


Hay algunas cosas por ahi que no entiendo para que las quieren... pero bueno.
Hice otro formulario que le llame editor, este tiene los textbox para rellenar la informacion necesaria (nombre, apellido, bla bla)
En el form editor estaba todo bien, pero a la hora de hacer click en el boton aceptar para agregar los datos al listbox no puedo acceder :S...

private void button1_Click(object sender, EventArgs e)
        {
            Nombre = txtNombre;
            Apellido = txtApellido;
            Telefono = txtTelefono;
            Direccion = txtDireccion;
            Cedula = txtCedula;
            Form1 form1 = new Form1();
            form1.li // y acá yo queria agregar los items pero no puedo =( form1.listbox1.items.add(blabla
           
        }

Ahi esta mi problema, ojalá me puedan ayudar, me siento algo frustrado porque el proyecto es demasiado sencillo... pero bueno, todos los dias se aprende algo nuevo.
try {
     live();
}
catch (ShitHappensException ex) {
MessageBox.Show(ex.Solution)
}

Precaución: La programacion puede producir adiccion

SeniorX

try {
     live();
}
catch (ShitHappensException ex) {
MessageBox.Show(ex.Solution)
}

Precaución: La programacion puede producir adiccion

P[i]


            Form1 form1 = new Form1();
            form1.li // y acá yo queria agregar los items pero no puedo =( form1.listbox1.items.add(blabla


Estas lineas no las has pensado demasiado no.
Bueno haber, cuando inicias un programa con opciones de ventanas lo primero de todo tienes que definir una funcion principal con Application.Run(new MainForm()); siendo la funcion principal MainForm(), bueno esto supongo que lo sabes pero de todos modos.
Esta nueva funcion principal, debe de tener un Inicializador de componentes como es definir la posicion de la ventana, espcio...  normalmentese le llama a esta funcion InitializeComponent(); (porke sera jej) bueno aki dentro tienes todo los items que insertaste en el formulario, como por ejemplo el listbox que por ejemplo le hayas puesto el nobre mylista.En la funcion de inicializacion lo que modifica a mi objeto mylista es la posicion y tamaño (basico), pero si buscas no se declarado dentro de la funcion, porke la declaracion de mylista se hace fuera de todas las funciones,pero dentro de la clase principal MainForm. si buscas debe aparecer algo coma:
private System.Windows.Forms.ListBox mylista; con so cual en cualquier funcion dentro de la clase podras modificar esta lista. Lo malo eske si no estas en esta clase no podras modificarla al menos que cambies los permisos. Si no sabes muy bien te recomiendo que cambies de private a public, y despues desde cualkier clase que estas accedas como:
MainForm.mylista;
kedando el codigo anterior que pusiste como:
  MainForm.mylista.items.add("hola"); //siempre podras modificar.

SeniorX

#3
De verdad muchas gracias, no hacia falta tanta explicacion, pero seguro que a otra persona le servira, resumiendo, era cosa de cambiar la declaracion del listbox que por defecto es privada a publica y listo. Muchisimas gracias :D.


Ahora algo raro pasa:
private void button1_Click(object sender, EventArgs e)
        {
            Nombre = txtNombre.Text;
            Apellido = txtApellido.Text;
            Telefono = txtTelefono.Text;
            Direccion = txtDireccion.Text;
            Cedula = txtCedula.Text;
            Form1 ese = new Form1();
            ese.listBox1.Items.Add("Probando");
           
            this.Hide();
           
        }

Se supone que al apretar el boton aceptar deberia agregar probando al listbox pero no lo hace :S. Que puede ser¿? Porque desde la clase form1 si se puede. Ahora me "reconoce" desde Editor al listbox de Form1, pero no funciona agregar un item :S:S
try {
     live();
}
catch (ShitHappensException ex) {
MessageBox.Show(ex.Solution)
}

Precaución: La programacion puede producir adiccion