I have two forms - one is the main form:
And the second is for adding or editing information:
When I click the edit button my second form shows up filled with selected person I want to change. I am changing first name and then click on the cancel button but the name of the selected person is already changed. What is the reason? How can I fix it? It might be some problems with DataBinding.
Here is my code for main form:
public partial class FormEmployees : Form
{
List<Employee> employees;
BindingSource bsEmployee;
public FormEmployees()
{
InitializeComponent();
bsEmployee = new BindingSource();
employees = Storage.GetEmployee();
lbEmployees.DisplayMember = "FullName";
lbEmployees.ValueMember = "EmployeeId";
bsEmployee.DataSource = employees;
lbEmployees.DataSource = bsEmployee;
}
private void btEdit_Click(object sender, EventArgs e)
{
Employee emp = bsEmployee.Current as Employee;
FormEdit formEdit = new FormEdit(emp);
if (formEdit.ShowDialog() == DialogResult.OK)
{
bsEmployee.ResetBindings(true);
}
}
private void btAdd_Click(object sender, EventArgs e)
{
Employee emp = new Employee
{
FirstName = "Input Data",
Birthday = DateTime.Now.AddYears(-16)
};
FormEdit formEdit = new FormEdit(emp);
if (formEdit.ShowDialog() == DialogResult.OK)
{
bsEmployee.Add(emp);
bsEmployee.ResetBindings(true);
}
}
private void btDelete_Click(object sender, EventArgs e)
{
Employee emp = bsEmployee.Current as Employee;
if(MessageBox.Show("Do you want to delete it?", "Deleting record...", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
bsEmployee.Remove(emp);
bsEmployee.ResetBindings(true);
}
}
}
Here is my code for the additional form
public partial class FormEdit : Form
{
Employee employee;
BindingSource bs = new BindingSource();
public FormEdit(Employee employee)
{
InitializeComponent();
this.employee = employee;
bs.DataSource = this.employee;
tbFirstName.DataBindings.Add("Text", bs, "FirstName", false, DataSourceUpdateMode.OnPropertyChanged);
tbLastName.DataBindings.Add("Text", bs, "LastName", false, DataSourceUpdateMode.OnPropertyChanged);
tbInn.DataBindings.Add("Text", bs, "INN", false, DataSourceUpdateMode.OnPropertyChanged);
dtmBirthday.DataBindings.Add("Value", bs,"Birthday",
false, DataSourceUpdateMode.OnPropertyChanged);
}
private void btCancel_Click(object sender, EventArgs e)
{
Close();
}
}