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

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

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

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

Q&A

解決済

1回答

607閲覧

DataGridViewの使い方

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

0グッド

0クリップ

投稿2017/09/21 02:57

編集2017/09/21 03:43

DataGridView1とDataGridView2をForm1に貼りつけます。

DataGridView1には、Textカラムを1つ(Column1)、ボタンのカラムを1つ(Column2)。用意します
DataGridView2には、Textのカラムを2つ用意します(Column3, Column4)。

DataGridView1のTextカラムには「数字」を入力し、この数分だけDataGridView2のRowを追加します。
つまり、DataGridView1のTextカラムのcellに「5」を入力し、ボタンのカラムのcellをクリックすると、DataGridView2の行数が5行になる状態です。

そして、DataGridView2のColumn3, Column4に値を入れます。(わかりやすく、Column3は名前, Column4は性別とします)
今、DataGridVIew2のRowは5行。そこで、
名前 性別
A 男
B 男
C 女
D 男
E 女

と入力します。

このDataGridView2のデータをプログラム上で保存しておくにはどうすればよいのでしょうか?

C#

1 public partial class Form1 : Form 2 { 3 public Form1() 4 { 5 InitializeComponent(); 6 7 dataGridView1.Rows.Add(); 8 dataGridView1.Rows.Add(); 9 } 10 11 private void dataGridView1_CellContentClick_1(object sender, DataGridViewCellEventArgs e) 12 { 13 DataGridView dgv = (DataGridView)sender; 14 //"Column2"列ならば、ボタンがクリックされた 15 if (dgv.Columns[e.ColumnIndex].Name == "Column2") 16 { 17 dataGridView2.Rows.Clear(); 18 19 for (int i = 0; i < dataGridView1[0, e.RowIndex].Value; i++) 20 { 21 dataGridView2.Rows.Add(); 22 23 } 24 } 25 } 26 }

(例)
DataGridView1の1行目に数字を入力し、ボタンをクリックする。
DataGridView2に名前と性別を入力する。入力完了後、ButtunをFormに貼りつけておくなどしてクリックイベントで入力データを保存(XMLなどファイルではなくプログラム上に保存)。

DataGridView1の2行目に数字を入力し、ボタンをクリックする。
DataGridView2に名前と性別を入力する。入力完了後、ButtunをFormに貼りつけておくなどしてクリックイベントで入力データを保存(XMLなどファイルではなくプログラム上に保存)。

DataGridView1のボタンをクリックすると、先ほど入力したデータがDataGridView2に表示される。

このような結果を得るにはどのようにすればよいのか教えてください。
プログラム上に保存と何度も記載しておりますが、表現が間違っているかもしれません。
結局、DataGridView1の1行目のボタンをクリックしたら、1行目のデータがDataGridView2に表示され、DataGridView1の2行目のボタンをクリックしたら、2行目のデータがDataGridView2に表示されるといった具合です。

よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんにちは。

このDataGridView2のデータを保存しておくにはどうすればよいのでしょうか?

下記が参考になります。私もやったことはないのですが、意外に簡単にできるようですね。
DataGridViewのデータをXMLに保存・読み込みする

投稿2017/09/21 03:06

Chironian

総合スコア23272

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

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

退会済みユーザー

退会済みユーザー

2017/09/21 03:27

ご回答ありがとうございます。 私の書き方が悪かったため訂正させていただきます。 保存というのは、XMLなどファイルに保存ではなく、あくまでプログラム上で保存という意味です。 せっかくご回答していただいたのに申し訳ございません。
退会済みユーザー

退会済みユーザー

2017/09/21 03:46

「プログラム上で」とは具体的にどういう意味ですか? DataTable のインスタンスとか、List<T> 型のオブジェクトとか? それを後で何らかの目的に使うのだと想像していますが、であればそのことも具体的に書いてください。
退会済みユーザー

退会済みユーザー

2017/09/21 06:10

SurferOnWwwさん、ご返信ありがとうございます。 どのような言葉が適しているのかあまりわかりませんが、「プログラム上で」というのは、おっしゃる通りListだったりDataTableです。 仮に、DataGridView1の1行目のボタンをクリックし、DataGridView2にデータを入力します。そしてDataTableをnewしてそこにDataGridView2の入力データを保存??しておきます。 次に、DataGridView1の2行目のボタンを上と同じ動作をします。 その後、DataGridView1の1行目のボタンを再度クリックしたとき、先ほど入力していたデータがDataGridView2に出力されている状態で表示したいです。2行目のボタンをクリックした場合も同様。 つまり、後からでも手直しが出来る状態です。 先ほどの私のソースコードでは、DataGridView1のボタンをクリックしデータを入力しても、結局保存??していないので入力したデータが表示されません。(当たり前ですが。。。) ですので、DataGridView1のボタンをクリックし、データの表示を切り替えれるような動きがほしいです。 よろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2017/09/21 06:14

Chironianさん、ご返信ありがとうございます。 参考にしてみます。
退会済みユーザー

退会済みユーザー

2017/09/21 07:00

>「プログラム上で」というのは、おっしゃる通りListだったりDataTableです。 であれば、上のコメントで Chironian さんが紹介された記事の「DataSouceプロパティを使う」のセクションに書いてあるようにしてはいかがですか? 質問にあった、 > DataGridView2のColumn3, Column4に値を入れます。 というところは DataGridView を直接操作して行うのではなく、その記事の Form1.cs のコードの書いてあるように、まず List<T> 型のオブジェクトを作って、DataGridView にバインドするということです。 そうすれば、 > DataGridView2のデータをプログラム上で保存 は、そのためのコードを別に書く必要はなくなり、事前に作った List<T> 型のオブジェクトをそのまま使えばいいわけですから。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問