在C# WinForms中,实现数据绑定的方法如下:
INotifyPropertyChanged
接口。这个接口允许你的数据类在属性值发生变化时通知绑定的UI控件。例如:public class Person : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string _name;
public string Name
{
get { return _name; }
set
{
_name = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Name)));
}
}
private int _age;
public int Age
{
get { return _age; }
set
{
_age = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Age)));
}
}
}
Label
或TextBox
,并设置其DataBindings
属性。例如,将Label
的Text
属性绑定到Person
对象的Name
属性:public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
Person person = new Person { Name = "John Doe", Age = 30 };
labelName.DataBindings.Add("Text", person, "Name");
}
}
在这个例子中,我们创建了一个Person
对象,并将其Name
属性绑定到labelName
的Text
属性。当Person
对象的Name
属性发生变化时,labelName
的文本也会自动更新。
BindingList<T>
或ObservableCollection<T>
。例如,将一个BindingList<Person>
绑定到一个ComboBox
:public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
BindingList<Person> people = new BindingList<Person>
{
new Person { Name = "John Doe", Age = 30 },
new Person { Name = "Jane Smith", Age = 28 }
};
comboBoxPeople.DataSource = people;
comboBoxPeople.DisplayMember = "Name";
}
}
在这个例子中,我们将一个BindingList<Person>
绑定到comboBoxPeople
的DataSource
属性,并设置DisplayMember
属性为Name
。这样,ComboBox
将显示Person
对象的名称。当BindingList
中的数据发生变化时,ComboBox
将自动更新。