How to refresh DataSource of a ListBox
.net, c#, winforms
Solution
`listbox1.DataSource` property looks for value changes but by assigning the same list all the time the value won't really change.
You can use a `BindingList<T>`, instead of your `List<T>`, to automatically recognize new items added. Your ShowData() method must be called once at startup.
public partial class MyForm:Form
{
public MyForm(){
InitializeComponent();
ShowData();
}
BindingList<MyData> data = new BindingList<MyData>();
private void ShowData()
{
listBox1.DataSource = data;
listBox1.DisplayMember = "Name";
listBox1.ValueMember = "Id";
}
private void buttonAddData_Click(object sender, EventArgs e)
{
var selection = (MyData)comboBox1.SelectedItem;
data.Add(selection);
}
}
Problem
Form has one Combobox and one ListBox. When the "Add" button is clicked, I want to add the selected item from the ComboBox to the ListBox. ``` public partial class MyForm:Form { List<MyData> data = new List<MyData>(); private void ShowData() { listBox1.DataSource = data; listBox1.DisplayMember = "Name"; listBox1.ValueMember = "Id"; } private void buttonAddData_Click(object sender, EventArgs e) { var selection = (MyData)comboBox1.SelectedItem; data.Add(selection); ShowData(); } } ``` With this example, the selected item is replaced with the new selection inside ListBox. I need to add the item to the list. What is wrong with my code?