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