2011-10-12 209 views
0

我想从我的程序中选择一个列表框项目,然后更新它。我有一个列表ecoItems.Eco是一个有2个存储变量,一个字符串和一个双变量的类。SetEcoValues是一组方法take两个值,一个字符串和一个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); 
     } 


    } 

回答

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; 
    } 
} 
1

你实际上并没有在任何地方获取ListItem,并且试图向ListBox添加一些不是ListItem的东西。你可以尝试像这样:

ListItem Item = listBox1.SelectedItem; 

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

或者......如果你有绑定到你的ECOS的名单列表框,并希望它更新,而不是listBox5.Items.Insert ......你需要重新绑定它。

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

我有种奇怪的,如果他有他必然要他列表框列表,并希望改变反映在列表框中。也许这就是为什么他从不改变列表框项目并尝试将一个Eco对象插入到列表框中。 – Yatrix

+0

@Yatrix你可能是对的,很难从他的代码示例中知道。我想在这种情况下,他需要更新他的生态清单,然后重新绑定整个列表 –

+0

是Yatrix,我想要做的。立即改变到列表框。我可以这样做吗? –