更新列表框项

本文关键字:列表 更新 | 更新日期: 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();