2011-10-12 4 views
0

je veux à partir de mon programme pour sélectionner un élément de la liste, puis le mettre à jour. J'ai une liste ecoItems.Eco est une classe avec 2 variables de magasin, une chaîne et une double variable.SetEcoValues ​​est un ensemble deux valeurs, une chaîne et un double.i j'essaye ce code mais ne change rien.toutes les suggestions?mettre à jour un élément de la liste déroulante

  private void Update_Click(object sender, EventArgs e) 
    { 


      Eco y; 
      y = ecoItems.ElementAt<Eco>(listBox1.SelectedIndex); 
      y.SetEcoValues(textBox1.Text,Convert.ToDouble(textBox2.Text)); 
      listBox5.Items.Insert(listBox1.SelectedIndex, y); 
     } 


    } 

Répondre

1

En utilisant votre code et ce que je suppose est votre classe, je ferais quelque chose comme ceci:

class Eco { 
    public Eco() { } 
    public void SetEcoValues(string text, double value) { 
    Text = text; 
    Value = value; 
    } 
    public string Text { get; set; } 
    public double Value { get; set; } 
    public override string ToString() { 
    if (!String.IsNullOrEmpty(Text)) { 
     return Text; 
    } 
    return base.ToString(); 
    } 
} 

ListView listView1; // initialized somewhere, I presume. 

void Update_Click(object sender, EventArgs e) { 
    if ((listView1.SelectedItems != null) || (0 < listView1.SelectedItems.Count)) { 
    ListViewItem item = listView1.SelectedItems[0]; 
    Eco y = item.Tag as Eco; 
    if (y == null) { 
     y = new Eco(); 
    } 
    y.SetEcoValues(textBox1.Text, Convert.ToDouble(textBox2.Text)); 
    item.Text = y.Text; 
    if (item.SubItems.Count < 2) { 
     item.SubItems.Add(y.Value.ToString()); 
    } else { 
     item.SubItems[1].Text = y.Value.ToString(); 
    } 
    item.Tag = y; 
    } 
} 
1

Vous n'êtes pas réellement obtenir le ListItem partout, et d'essayer d'ajouter quelque chose à la zone de liste qui n'est pas ListItem. Vous pouvez essayer quelque chose comme ceci:

ListItem Item = listBox1.SelectedItem; 

//Update the Text and Values 
Item.Text = textBox1.Text,; 
Item.Value = textBox2.Text; 

Ou ... si vous avez le ListBox lié à votre liste d'Ecos et que vous voulez à jour, au lieu de listBox5.Items.Insert ... vous devez re lier il.

listBox5.DataSource = y; 
listBox5.DataBind(); 
+0

je sorte de se demander s'il a sa liste liée à son listbox et veut un changement reflété dans la liste. Peut-être que c'est pourquoi il ne change jamais un élément de liste et essaye d'insérer un objet Eco dans la liste. – Yatrix

+0

@Yatrix Vous avez peut-être raison, difficile à dire à partir de son exemple de code. Je suppose que dans ce cas, il a besoin de mettre à jour sa liste d'Eco, puis re-lier toute la liste –

+0

oui Yatrix que je veux faire.un changement immédiat dans la liste.je fais ça? –

Questions connexes