DataGridViewの内容を更新したらDBも更新したいの答え

BindingSourceのイベントCurrentItemChangedを使用する。
CurrentItemChangedは、行の移動で発生する。

イベントが発生したら、BindingSource.CurrentからDataRowViewを取得する。

追加時にDataRowView.IsNewプロパティはTrueになるので、この場合は変更なし。
変更がない場合は、DataRowView.IsEditプロパティはTrueになるので、この場合も変更なし。

結論としてはDataRowViewのIsNew=false IsEdit=falseの時に更新処理を実行すればOK

.
.
  bindingSource.CurrentItemChanged += 
    new EventHandler(bindingSource_CurrentItemChanged);
.
.
.
private void bindingSource_CurrentItemChanged(
    object sender, EventArgs e) {
  DataRowView drv = (DataRowView)bindingSource.Current;
  if (drv.IsNew || drv.IsEdit)
    return;

  // DB更新処理            
}

イメージとしてはこんな感じで