1
我的表单中有一个绑定源控件。我利用表单中的绑定源current_changed事件来完成一些特殊任务,我面临的问题是,在form_Load事件中,我将一个列表作为此绑定源的数据源,并且current_changed事件已被多次调用。为什么这样?绑定源控件
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
List<Employee> listEmployee = new List<Employee>();
for (int i = 1; i <= 10; i++)
{
Employee emp = new Employee();
emp.EmployeeName = "user" + i;
emp.EmployeeAddress = "Address" + i;
listEmployee.Add(emp);
}
bindingSource1.DataSource = listEmployee;
dataGridView1.DataSource = bindingSource1;
}
private void bindingSource1_CurrentChanged(object sender, EventArgs e)
{
MessageBox.Show("Hai");
}
}
public class Employee
{
private string Name;
private string Address;
public string EmployeeName {
get {return Name;}
set { Name = value; }
}
public string EmployeeAddress
{
get { return Address; }
set { Address = value; }
}
}
您是否一次添加一个项目? – stuartd
否我创建一个列表并将此列表作为绑定源控件的数据源。但多次调用current_changed事件(仅在表单加载时)。一旦表单被加载,它正常工作 –
文档确实表示CurrentChanged被引发_“[当]基础列表的成员资格发生变化时,这会导致位置引用另一个项目”_“,该项目必须触发更改数据源。您可以在'Form_Load'中设置一个'loading'标志,并用它来忽略事件,或者 - 可能更好 - 在数据加载完成后连接事件。 – stuartd