【C#】別フォームからメインフォームのデータグリッドビューの値を取得したい

お久しぶりです。

最近首を痛めたり、風邪を引いたりと体調が優れておりませんでした。

みなさまもお体にはお気をつけくださいね。

 

さてさて、以前もこちらのブログでご紹介したことがあるかと思いますが、私はvisual studioというソフトを使って社内で使用するデスクトップアプリというものの開発・改修を行なっております。

 

これまでVB.netという言語で開発されたデスクトップアプリがもう10年近く稼働しており、これをわかりやすく言えば増築したりリフォームしたりしていました。

 

ところが最近C#という言語も使えるようになりたいと強く願うようになり、増築や新規の場合はC#という言語を使って勉強しながら開発を行なっております。

 

私はどうやら知らない言語で開発するのが好きらしく、なかなか思う通りに開発できないとワクワクします。

 

今日つまずいたのが、記事のタイトルにもあります「別フォームからメインフォームのデータグリッドビューの値を取得したい」というところでした。

 

VB.netの場合、クラス・インスタンス・コンストラクタはそこまで意識しないでも開発することができます。

ところが、C#の場合はそうはいきません。

 

私がしたかったのが、メインフォームでデータグリッドビューを作成し、別フォームをモーダルで開き、開いた別フォームで入力した値と合わせてデータベースのテーブルに追加したいというものでした。

 

つまりメインフォームでは明細情報を入力し、別フォームではヘッダー情報を入力し合わせて一つのテーブルに追加したかったのです。

 

私がつまづいたのが、別フォームを開いた時にメインフォームのインスタンスを作成し、メインフフォームのデータグリッドビューから値を取得しようとしました。

 

こうすると、インスタンスを作成した時点でデータグリッドビューの値が初期化され、値を取得することができませんでした。

 

で、どうしたかというと、別フォームを呼び出した時にコンストラクタでデータグリッドビューごと受け渡しました。

 

private datagridview _dgvhoge;

public hoge(datagridview dgvhoge)

{

_dgvhoge = dgvhoge;

}

 

こんな感じでしょうかね。

 

 

実はたったこれだけなのですが、VB.netが染み付いているせいでコンストラクタという考えが思いつかず時間を浪費してしまいました。

 

今後も時間の浪費は続くことでしょう。

 C#まだまだ始めたばかりなので、今日書いていることも間違いだれけかもしれません。

 

長い目で見ていただけたらと思います。