DataGrid で複数選択した行を削除する

データグリッドでの指定行の削除の続き。前回は1行のみ削除しましたが、今回は複数行削除です。

Private gDS as System.Data.DataSet  ' ちゃんと Fill していること
Friend WithEvents gGrid As System.Windows.Forms.DataGrid ' ちゃんと生成してフォームに貼り付けてあること
...

  Dim ix As Integer
  Dim aDeleted As New System.Collections.ArrayList

  ' 削除された行番号を取得
  For ix = 0 to gDS.Tables(gGrid.DataMember).Rows - 1
    If gGrid.IsDeleted(ix) = True Then
      aDeleted.Add(ix)
    End If
  Next

  ' 削除実行
  For Each ix In aDeleted
    gDS.Tables(gGrid.DataMember).Rows(ix).Delete
  Next

ポイントは、IsDeleted メソッドよりか、DataRow::Delete を実行すると、IsDeletedが無効になっちゃうところ。ループで IsDeleted でチェックして、すぐに削除する、という方法だと、ひとつ削除されるだけになってしまいました。