我想从我的程序中选择一个列表框项然后更新它。我有一个列表ecoItems.Eco是一个有2个存储变量的类,一个字符串和一个双变量.SetEcoValues是一个集合方法取两个值,一个字符串和一个double.i尝试此代码,但不要改变任何东西。任何建议?
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);
}
}
答案 0 :(得分:1)
你实际上并没有在任何地方获取ListItem,并试图向ListBox中添加一些不是ListItem的东西。你可以尝试这样的事情:
ListItem Item = listBox1.SelectedItem;
//Update the Text and Values
Item.Text = textBox1.Text,;
Item.Value = textBox2.Text;
或者......如果你有ListBox绑定到你的Ecos列表并希望它更新,而不是listBox5.Items.Insert ...你需要重新绑定它。
listBox5.DataSource = y;
listBox5.DataBind();
答案 1 :(得分: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 < 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;
}
}