更新列表框项
本文关键字:列表 更新 | 更新日期: 2023-09-27 18:11:00
我想从我的程序中选择一个列表框项,然后更新它。我有一个ecoItems清单。Eco是一个类,有两个存储变量,一个字符串和一个双变量。SetEcoValues是一个集合方法,接受两个值,一个字符串和一个双精度。我尝试了这个代码,但没有改变任何东西。有什么建议吗?
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);
}
}
使用您的代码,我猜是您的类,我会这样做:
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;
}
}
您实际上没有在任何地方获得listtitem,并试图向ListBox添加一些不是listtitem的东西。您可以尝试这样做:
ListItem Item = listBox1.SelectedItem;
//Update the Text and Values
Item.Text = textBox1.Text,;
Item.Value = textBox2.Text;
还是……如果你有ListBox绑定到你的eco列表,并希望更新它,而不是listBox5.Items.Insert…你需要重新绑定它。
listBox5.DataSource = y;
listBox5.DataBind();