Разница между BindingList и IEnumerable при работе с ListBox заключается в функциональности и области применения этих интерфейсов.
BindingList предоставляет функциональные возможности привязки данных более высокого уровня. 1 Он расширяет интерфейс IList путём добавления свойств, методов и событий, необходимых для двусторонней привязки данных. 1 BindingList обеспечивает базовые возможности сортировки и уведомления об изменениях. 1
IEnumerable, в свою очередь, обычно используется в ASP.NET. 1 Поддержка Windows Forms для этого интерфейса доступна только через компонент BindingSource. 1 Он копирует все элементы IEnumerable в отдельный список, предназначенный исключительно для привязки. 1 При этом поддержка, получаемая от базового интерфейса IEnumerable, ограничена привязкой только для чтения. 2 Для редактирования коллекции (например, вставки и удаления) понадобится более сложная инфраструктура. 2
Таким образом, BindingList больше подходит для двусторонней привязки данных, а IEnumerable — для привязки только для чтения. 12