#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: Я составлял свой ответ, пока все комментировали привязку данных. Мой ответ не показывает привязку данных, но привязка данных может быть выполнена.