使用ObservableCollection时更新列表框

时间:2015-06-11 14:07:50

标签: c# winforms collections listbox

我有一个ObservableCollection绑定到这样的列表框:

timeStamp = new SimpleDateFormat("ddMMMyyyy").format(new Date());

它将数据添加到列表框(listEmail),但是,如何在删除后更新它。这是我到目前为止所尝试的:

string[] selection = comboEmail.GetItemText(comboEmail.SelectedItem).Split(',');

Employee add = new Employee(Convert.ToInt32(selection[0]), selection[1], selection[2], selection[3]);
displayEmp.Add(add);
listEmail.DataSource = displayEmp;

但它不起作用。用户点击删除按钮后如何更新列表?

1 个答案:

答案 0 :(得分:0)

您需要设置ItemSource而不是DataSource。这假设您还设置了DataContext

listEmail.ItemSource = displayEmp;

由于您已将displayEmp定义为ObservableCollection,因此您的更新应自动反映。

编辑: 以下是使用BindingList进行引用的示例,该示例自动刷新UI:

public BindingList<Data> DataList { get; set; }

public void Load()
{
    DataList = new BindingList<Data>
                   {
                        new Data
                            {
                                Key = "Key1",
                                Value = "Value1"
                            },
                        new Data
                            {
                                Key = "Key2",
                                Value = "Value2"
                            },
                        new Data
                            {
                                Key = "Key3",
                                Value = "Value3"
                            }
                    };
     listBox1.DataSource = DataList;
     listBox1.DisplayMember = "Value";
     listBox1.ValueMember = "Key";
}

public class Data
{
     public string Key { get; set; }
     public string Value { get; set; }
}   

private void button1_Click(object sender, EventArgs e)
{
    DataList.RemoveAt(1);
}