© 2026 Hedgehog Software, LLC

TwitterGitHubDiscord
More
CommunitiesDocsAboutTermsPrivacy
Search
Star
Setup for Free
C#C
C#•3y ago•
8 replies
DaVinki

❔ ✅ WinForms ListBox.DataSource not working

I have a ListBox that contains only instances of Employee. ToString looks like
Employee { Name: "John Smith", Id: 123, Salary: $100,000.00 }
Employee { Name: "John Smith", Id: 123, Salary: $100,000.00 }
. Without creating my own list and instead just adding objects to the ObjectCollection already owned by the ListBox, everything works. When I create my own list
public List<Employee> _employees
public List<Employee> _employees
and initialize it before the components of the form and set the ListBox data source after the components in the form constructor, no values from the list are shown.

I am refreshing the ListBox in its prompt closing event after adding the Employee to the list. Looking online did not help since they all said to do what I thought I needed to do to bind a ListBox in the first place, which is to just set the data source using the appropriate object or refreshing the list. Here's the relevant code:
public partial class Form1 : Form
{
    private List<Employee> _employees;
    public Form1()
    {
        _employees = new();
        InitializeComponent();
        EmployeesListBox.DataSource = _employees;
    }

    private void CreateEmployeeButton_Click(object sender, EventArgs e)
    {
        var employee = new Employee();
        var prompt = new EmployeeCreatorForm(employee);
        prompt.Closing += (_, _) => // No leaking since prompt is closing
        {
            if (!prompt.Completed)
                return;

            _employees.Add(employee);
            Show();
            EmployeesListBox.Refresh();
        };

        Hide();
        prompt.Show();
    }

    private void CreateManagerButton_Click(object sender, EventArgs e)
    {
        var manager = new Manager();
        var prompt = new ManagerCreatorForm(manager);
        prompt.Closing += (_, _) =>
        {
            if (!prompt.Completed)
                return;

            _employees.Add(manager);
            Show();
            EmployeesListBox.Refresh();
        };

        Hide();
        prompt.Show();
    }
}
public partial class Form1 : Form
{
    private List<Employee> _employees;
    public Form1()
    {
        _employees = new();
        InitializeComponent();
        EmployeesListBox.DataSource = _employees;
    }

    private void CreateEmployeeButton_Click(object sender, EventArgs e)
    {
        var employee = new Employee();
        var prompt = new EmployeeCreatorForm(employee);
        prompt.Closing += (_, _) => // No leaking since prompt is closing
        {
            if (!prompt.Completed)
                return;

            _employees.Add(employee);
            Show();
            EmployeesListBox.Refresh();
        };

        Hide();
        prompt.Show();
    }

    private void CreateManagerButton_Click(object sender, EventArgs e)
    {
        var manager = new Manager();
        var prompt = new ManagerCreatorForm(manager);
        prompt.Closing += (_, _) =>
        {
            if (!prompt.Completed)
                return;

            _employees.Add(manager);
            Show();
            EmployeesListBox.Refresh();
        };

        Hide();
        prompt.Show();
    }
}
C# banner
C#Join
We are a programming server aimed at coders discussing everything related to C# (CSharp) and .NET.
61,871Members
Resources
Was this page helpful?

Similar Threads

Recent Announcements

Similar Threads

❔ Displaying correct information in a listBox (WinForms)
C#CC# / help
3y ago
ListBox entries from UserControl not working.
C#CC# / help
16mo ago
❔ WinForms Topmost property not working as intended.
C#CC# / help
3y ago
✅ console.writeline not working on Winforms application
C#CC# / help
3y ago