
Arreglo de objetos
Publicado por José (2 intervenciones) el 15/04/2017 12:17:15
Buenas. Estoy tratando de hacer como una agenda y tengo un problema a la hora de obtener objetos dentro de un arraylist. Logro meterlos, pero cuando voy a recuperar la información, siempre me muestra el ultimo contacto añadido.
Tengo una ligera idea de como debiera hacerlo, imagino que mi error estará en 2 puntos:
1º Estoy metiendo los datos siempre en la misma posición del arraylist (o siempre en el objeto creado) y por lo tanto, muestra siempre estos datos
2º No debo estar leyendo el arraylist y solo estoy leyendo el objeto con sus ultimos datos creados.
En cualquier caso, he hecho debug y me parece que el arraylist no crece y solo modifica el primer item, cosa que me deja un poco loco porque el foreach pasa tantas veces como contactos creo y no lo logro entender.
Os dejo el código de Program1.cs. (he cortado código, pero no me he olvidado del using.System.Collections). Agrego la clase cDatos por si fuera interesante.
Gracias de antemano.
Tengo una ligera idea de como debiera hacerlo, imagino que mi error estará en 2 puntos:
1º Estoy metiendo los datos siempre en la misma posición del arraylist (o siempre en el objeto creado) y por lo tanto, muestra siempre estos datos
2º No debo estar leyendo el arraylist y solo estoy leyendo el objeto con sus ultimos datos creados.
En cualquier caso, he hecho debug y me parece que el arraylist no crece y solo modifica el primer item, cosa que me deja un poco loco porque el foreach pasa tantas veces como contactos creo y no lo logro entender.
Os dejo el código de Program1.cs. (he cortado código, pero no me he olvidado del using.System.Collections). Agrego la clase cDatos por si fuera interesante.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
ArrayList contactos = new ArrayList();
cDatos persona = new cDatos();
private void agregarContacto()
{
if(txtNombre.Text == "" || txtEdad.Text == "" || txtTelefono.Text == "")
{
MessageBox.Show("Error. Datos requeridos.");
} else
{
persona.Nombre = txtNombre.Text;
persona.Edad = int.Parse(txtEdad.Text);
persona.Telefono = int.Parse(txtTelefono.Text);
persona.Sexo = cmbSexo.SelectedItem.ToString();
persona.Casado = cmbCasado.SelectedItem.ToString();
agregarArray();
MessageBox.Show("Contacto creado");
}
}
private void agregarArray()
{
contactos.Add(persona);
}
private void mostrarArray()
{
foreach (cDatos persona in contactos)
{
mostrarContacto();
}
}
private void mostrarContacto()
{
string texto = "Nombre: " + persona.Nombre + "\n";
texto = texto + "Edad: " + persona.Edad + "\n";
texto = texto + "Teléfono: " + persona.Telefono + "\n";
texto = texto + "Sexo: " + persona.Sexo + "\n";
texto = texto + "Casado: " + persona.Casado + "\n";
MessageBox.Show(texto);
}
private void btnInsertar_Click(object sender, EventArgs e)
{
agregarContacto();
}
private void btnMostrar_Click(object sender, EventArgs e)
{
mostrarArray();
}
Gracias de antemano.
- cDatos.rar(502,0 B)
Valora esta pregunta


0