【追記】列を行と勘違いしていました。以下は行を消す場合です。スルーしてください。
全体の構成がどうなっているか不明ですが、DataGridView を使うなら以下のようにしてはいかが?
DataGridView ⇔ BindingSource ⇔ DataSet / DataTable ⇔ データソース
そうすれば、BindingSource.RemoveCurrent メソッドで DataGridView 上で選択した行に該当する DataTbale の行の DataRow.RowState プロパティを DataRowSate.Deleted に設定できます。
DataRow.RowState プロパティが DataRowSate.Deleted に設定されると、DataGridView にはその行は表示されなくなります。
具体例は以下の記事を見てください。
XML ファイルを DataGridView に表示
http://surferonwww.info/BlogEngine/post/2019/04/26/show-content-of-xml-file-on-datagridview.aspx
何故上記の構成をお勧めするかと言うと・・・
以下の記事の「非接続型のデータ更新」のセクションの図1と図2を見てください。文章は読まなくてもいいので図だけ見てください。
DB 設計者のための明解 ADO.NET 第 1 回
https://docs.microsoft.com/ja-jp/previous-versions/cc482903(v=msdn.10)
図2の DataSet 右側に BindingSource / BindingNavigator 経由で DataGridView が接続されていると思ってください。
ユーザーが DataGridView を操作(行の削除・追加・訂正)した結果は図1にあるように DataSet / DataTable に反映されます。
ユーザーの編集操作が終わったら Update メソッドで図1の編集結果が一度に DB に反映されます。
そういう風にできているのです。