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

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

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

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

7425閲覧

C#で別のフォームのDataGridViewにテーブルの値を表示する方法

r.i.

総合スコア15

C#

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2021/04/09 08:16

編集2021/04/09 16:49

C#のwindowsフォームアプリケーションで、メインのフォームでDBから取得した値の入ったデータテーブル(DataTableインスタンス)の内容を、別のフォームに設置されているDataGridView(仮にADataGridView)に表示する方法をご教示くだされば幸いです。
よろしくお願いいたします。

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

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

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

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

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

gentaro

2021/04/09 09:13

「自分で調べたこと」「わからないポイント」を書いてください。 今のままならただの丸投げ。
退会済みユーザー

退会済みユーザー

2021/04/09 11:10

データグリッドビューではなくて DataGridView と書きましょう。表題と質問文を書き直していただけますか。
r.i.

2021/04/09 16:52

すみません。 分からないポイントは、別のフォームに設置されたDataGridViewの使い方です。 メインのフォームからどうやってそのDataGridViewにデータを渡すのか調べても分かりませんでした。 データグリッドビューからDataGridViewに修正しました。
退会済みユーザー

退会済みユーザー

2021/04/12 04:12

質問者さん、無言ですが、あなたの求めに応じて回答欄に追記したのでそれに対するフィードバックを書いてください。役に立った/立たなかったぐらいの返事はすぐできるのでは? 役に立たなかったなら、どこが期待する答えと違っているかを書いてもらえると、より期待に近い回答が出せるかも。とにかく無言は NG です。
r.i.

2021/04/12 09:40

ご返事が遅くなり申し訳ございません。 かなり助かりました。 ありがとうございました。
guest

回答1

0

ベストアンサー

メインのフォームでDBから取得した値の入ったデータテーブル(DataTableインスタンス)の内容を、別のフォームに設置されているデータグリッドビュー(仮にADataGridView)に表示する

ADataGridView Form2 に DataTable を引数に持つコンストラクタを追加し、メインのフォームで生成した DataTable への参照をメインのフォームで new ADataGridView(table) new Form2(table)のようにして渡せばよいのでは? (← 「別のフォーム」は Form2 と言うことだそうなので訂正)

DataTable への参照を渡してもらえればそれを DataGridView に表示するというコードを書くのは質問者さんは問題なくできるですよね?

【追記】

下の 2021/04/11 10:47 の私のコメントで「レスは回答欄に追記します」と書いた件です。

メインのフォームで、new Form2(table)のようにして渡しての部分ですが、例えばメインのフォームでForm2 form2=new Form2(table);として、そこからどうやって(Form2の)DataGridViewに表示するんでしょうか?変数form2を使うんですよね?

そのレスからは DataTable の作り方も分かってないような気がしますがそこはちょっと置いといて、メインのフォームで DataTable は作成済みというところから話をします。

(1) Visual Studio のソリューションエクスプローラーでプロジェクト名のノードを右クリックして新しい Form をプロジェクトに追加。以下、それを Form2 とします。

(2) From2 のデザイン画面でツールボックスから BindingSource と DataGridView をフォームにドラッグ&ドロップする。次に、Form2 のプロパティを表示し、Load イベントのハンドラを生成。

(3) Form2 のコードを表示し、DataTable フィールドと DataTable を引数に持つコンストラクタを追加。上記 (2) で生成された Form2.Load イベントのハンドラ内で DataGridView にコンストラクタで受け取った DataTable をバインドするコードを書く。以下のような感じ。

using System; using System.Data; using System.Windows.Forms; namespace WinFormsApp1 { public partial class Form2 : Form { public Form2() { InitializeComponent(); } DataTable _table; public Form2(DataTable table) { InitializeComponent(); this._table = table; this.dataGridView1.DataSource = this.bindingSource1; } private void Form2_Load(object sender, EventArgs e) { this.bindingSource1.DataSource = this._table; } } }

(4) メインフォームでは、例えば Button クリックのイベントハンドラなどで、以下のようにメインフォームで作成した DataTable への参照を渡して Form2 を表示してやれば、コンストラクタ経由で渡した DataTable の内容が Form2 の DataGridView に表示されるはずです。

private void button1_Click(object sender, EventArgs e { var table = new DataTable(); // DataTable の中身を作成(省略) var form2 = new Form2(table); form2.Show(); }

投稿2021/04/09 11:03

編集2021/04/11 02:49
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

r.i.

2021/04/09 17:11

ありがとうございます。 DataTable への参照を渡してもらえればそれを DataGridView に表示するというコードを書くのは質問者さんは問題なくできるですよね?の意味は分かりました。 すみません。ちょっと、それ以前の初歩的な質問なのですが、初め試したのがADataGridView に DataTable を引数に持つコンストラクタを追加など何もしてない状態で、メインのフォームのコード内から、(ADataGridViewが設置された)別フォームを仮にForm2とすると、Form2 form2 = new Form2();でまず別フォームをインスタンス化して、form2.ADataGridViewがエラーになった感じでした(form2からADataGridViewが参照できない) ネットで調べると、別フォームの部品にアクセスするにはまず別フォームをインスタンス化していたので上記のようにしました。 でも、DataGridViewはこういう使い方できないんですよね 回答してくださったように、DataGridView自体をメインのフォームのコード内からnewするという使い方(new ADataGridView(table)のように)が正しいDataGridViewの使い方なんですか? DataGridView全然わからないんです。すみません。 よろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2021/04/09 21:10

「別のフォーム」が ADataGridView だと思い違いしてました。Form2 ということで上の回答を書き直しておきます。
退会済みユーザー

退会済みユーザー

2021/04/10 01:28

> DataGridView全然わからないんです。 何が分からないのか書いてもらえないと、何も答えられないのですが。DataGridView の表示に関して質問があれば、自分ではどこまで実装できていて、どこで躓いていて、何が分かれば解決するかを、自分が書いたコードをアップして説明してください。
r.i.

2021/04/10 15:42

ありがとうございます。 すみません。 やはり、DataTableへの参照を渡してもらえればそれをDataGridViewに表示するというコードを書くの部分も教えていただければ幸いです(上記で分かると言ってしまいましたが、勘違いでした)。 メインのフォームで、new Form2(table)のようにして渡しての部分ですが、例えばメインのフォームでForm2 form2=new Form2(table);として、そこからどうやって(Form2の)DataGridViewに表示するんでしょうか?変数form2を使うんですよね? よろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2021/04/11 01:47

上のコメントのレスは回答欄に追記します。
r.i.

2021/04/12 09:46

ありがとうございます。 かなり助かりました。 DataGridViewは無事表示できました。 コードの意味などはまだ理解が不完全な部分があるので、ネットなどで調べて解析したいと思います。 また、何か分からないことがありましたら、Suferさんに質問させていただくかもしれません。 今後ともどうぞよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問