обновление элемента списка

#c#

Вопрос:

я хочу из своей программы выбрать элемент списка и затем обновить его.у меня есть список элементов.Eco-это класс с 2 переменными хранилища,одной строкой и одной двойной переменной.SetEcoValues-это метод набора,принимающий два значения, одно строковое и одно двойное.я пробую этот код, но ничего не меняю.есть какие-нибудь предложения?

 private void Update_Click(object sender, EventArgs e)  {    Eco y;  y = ecoItems.ElementAtlt;Ecogt;(listBox1.SelectedIndex);  y.SetEcoValues(textBox1.Text,Convert.ToDouble(textBox2.Text));  listBox5.Items.Insert(listBox1.SelectedIndex, y);  }    }  

Ответ №1:

Используя ваш код и то, что, как я полагаю, является вашим классом, я бы сделал что-то вроде этого:

 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 lt; 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 lt; 2) {  item.SubItems.Add(y.Value.ToString());  } else {  item.SubItems[1].Text = y.Value.ToString();  }  item.Tag = y;  } }  

Ответ №2:

На самом деле вы нигде не получаете список и пытаетесь добавить в список что-то, что не является списком. Вы могли бы попробовать что-то вроде этого:

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

Или… если у вас есть список, привязанный к вашему списку Ecos, и вы хотите обновить его вместо списка 5.Товары.Вставить… вам нужно будет снова связать его.

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

Комментарии:

1. Мне как бы интересно, привязан ли его список к списку и хочет ли он, чтобы изменения отразились в списке. Может быть, именно поэтому он никогда не меняет элемент списка и пытается вставить Эко-объект в список.

2. @Yatrix Возможно, вы правы, трудно сказать по его образцу кода. Я думаю, что в этом случае ему нужно обновить свой список Эко, а затем заново связать весь список

3. да, Ятрикс, что я хочу do.an немедленное изменение списка.могу ли я это сделать?

4. @lekoarmin я обновил образец с возможностью повторной привязки списка, что похоже на то, что вам нужно сделать.

5. @lekoarmin: Я составлял свой ответ, пока все комментировали привязку данных. Мой ответ не показывает привязку данных, но привязка данных может быть выполнена.