I have WinForm aplication,.Net framework 4.5 with vs2012 and Sqlserver 2008 R2.
In my form i use "BindingSource_CurrentItemChanged" to add new value if row.IsNew (user insert a new row)
 DataRowView row = (DataRowView) this.BindingSource.Current;
 //if row is null then exit form method.
 if(row==null)
    return;
 if(row.IsNew)
    {
      row["CreatedUserID"] = this.UserID;
      row["ModifiedUserID"] = this.UserID;
    }  
This worked successfully.
Then i want to write a method that when user edit a desire field value, my code put "UserID" to ModifiedUserID automatically (some thing like this):
  ... row["ModifiedUserID"] = this.UserID;
I used below code in BindongSource_ListChanged but get error:
if (e.ListChangedType == ListChangedType.ItemChanged)
        {
            DataRowView row = (DataRowView)this.ApplicationFilesBindingSource.Current;
            if (row == null)
                return;
            row["ModifiedUserID"] = this.ID;
        }
Error: DataTable Internal Index is corrupted: '5'.
after this if write a code in BindingSource_CurrentItemChanged
  if (row.Row.RowState == DataRowState.Modified)
            row["ModifiedUserID"] = User.User.Current.ID;
this code also raise a same exception too:
Error: DataTable Internal Index is corrupted: '5'.
Where do i put this code for change "ModifiedUserID" to this.UserID?
 in which event of BindingSource or DataGridView ?