C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C# BindingList作用

C#中BindingList的作用小结

作者:就是有点傻

BindingList是C#中用于实现数据绑定的重要集合类,提供自动通知UI更新、双向数据绑定和扩展事件支持等功能,下面就来详细介绍一下,感兴趣的可以了解一下

在C#中,BindingList<T> 是一个非常重要的集合类,位于 System.ComponentModel 命名空间,主要用于实现数据绑定(Data Binding)场景。

1. 核心作用

BindingList<T> 是 List<T> 的增强版,主要提供以下功能:

2. 关键特性

(1) 自动触发UI更新

BindingList<string> names = new BindingList<string>();
dataGridView1.DataSource = names; // 绑定到DataGridView

names.Add("Alice"); // 添加项时,DataGridView会自动更新显示
names.RemoveAt(0);  // 删除项时,UI同步更新

(2) 丰富的事件

事件触发时机
ListChanged列表内容或结构变化时(增删改排序等)
AddingNew添加新项之前
AddingNew添加新项之前
names.ListChanged += (sender, e) => 
{
    Console.WriteLine($"列表已更改,类型: {e.ListChangedType}");
};

(3) 支持编辑通知

若 T 实现 INotifyPropertyChanged,项属性修改时也会通知UI:

public class Person : INotifyPropertyChanged
{
    private string _name;
    public string Name
    {
        get => _name;
        set { _name = value; OnPropertyChanged(nameof(Name)); }
    }
    public event PropertyChangedEventHandler? PropertyChanged;
    protected void OnPropertyChanged(string propertyName) =>
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

// 使用
BindingList<Person> people = new BindingList<Person>();
dataGridView1.DataSource = people;

people.Add(new Person { Name = "Bob" });
people[0].Name = "Alice"; // 修改属性时,UI自动更新!

3. 典型使用场景

(1) WinForms/WPF数据绑定

// WinForms示例
BindingList<Product> products = new BindingList<Product>();
dataGridView1.DataSource = products;

// WPF示例(需配合ObservableCollection,但BindingList在某些场景仍有用)
listBox.ItemsSource = products;

 (2) 实时监控集合变化

var logs = new BindingList<string>();
logs.ListChanged += (s, e) => Console.WriteLine($"日志变更: {logs[e.NewIndex]}");
logs.Add("系统启动"); // 触发事件

4. 注意事项

到此这篇关于C#中BindingList的作用小结的文章就介绍到这了,更多相关C# BindingList作用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
阅读全文