質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

2回答

2562閲覧

datagridviewの選択中の列を削除したい

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2020/08/30 17:16

編集2020/08/30 23:49

ヘッダーとその情報が入った列のデータを削除したい

foreach(DataGridViewColumn c in dataGridView1.SelectedColumn) { dataGridView1.Columns.RemoveAt(0); } コード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YAmaGNZ

2020/08/30 22:03

「header数が可変の場合」とはどういうことですか? どういうタイミングで削除するのですか?
退会済みユーザー

退会済みユーザー

2020/08/30 23:50

すみません。当初一番column数が多い列を削除使用と思っていたんですが、選択中の列を消したいので可変という文は関係ないです。
退会済みユーザー

退会済みユーザー

2020/08/31 00:11

開発環境(OS, .NET Framework, Visual Studio のバージョンなど)ぐらいは書けませんか? 全体的にどういう構成になっているのですか? DataGridView の行を直接削除するのは普通はやらないと思うのですが・・・
guest

回答2

0

ベストアンサー

質問にあるようなコードを使うのであれば、DataGridViewColumnCollection.Remove(DataGridColumn)メソッドを使用してください。

ただ、SelectedColumnsSelectionModeプロパティFullColumnSelectに設定した時もしくはColumnHeaderSelectに設定して列ヘッダをクリックして列全体を選択した場合のみ選択列が格納されます。

また、DataGridViewColumnCollection.RemoveAt(Int32)メソッドは削除する列のインデックスを指定します。
ですので、こちらを使う場合は削除したい列のインデックスを求めて指定する必要があります。

投稿2020/08/31 00:40

YAmaGNZ

総合スコア10242

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

【追記】列を行と勘違いしていました。以下は行を消す場合です。スルーしてください。

全体の構成がどうなっているか不明ですが、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 に反映されます。

そういう風にできているのです。

投稿2020/08/31 00:22

編集2020/08/31 00:53
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YAmaGNZ

2020/08/31 00:41

質問では「列」を消したいとありますよ
退会済みユーザー

退会済みユーザー

2020/08/31 00:54

そうでした、うっかりしてました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問