• 締切済み

C# Form間のデータの受け渡し

Form2のテキストボックスとコンボボックス内のテキストをForm1のdataGridViewに転記したいと思っているのですがうまくいかず悩んでいます. //datagridveiwに添付 DataGridView f1_Text = (DataGridView)f1.Controls["dataGridView1"]; f1_Text.Rows.Add(Text1, Text2, "→", Text3, Text4); 上記のようなプログラムを組んで走らせると下記のようなエラーとなってしまいます. NullReferenceException オブジェクト参照がオブジェクト インスタンスに設定されていません。 Text1~Text2はそれぞれテキストボックスとコンボボックスのテキストになります. どなたか,どうすればよいかご教授頂けませんでしょうか?

みんなの回答

noname#160041
noname#160041
回答No.5

#4 >>フォームから他のフォームのコントロールに直接値を設定することはしない方がいいと思いますよ。 何で? どう言う技術理由?

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.4

以前にも似たような質問あったのですがフォームから他のフォームのコントロールに直接値を設定することはしない方がいいと思いますよ。 と、その似たような質問探してみたらご本人でしたか・・・ http://okwave.jp/qa/q7482551.html http://okwave.jp/qa/q7487579.html

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.3

>Form1を表示した後にForm2を表示します.また,dataGridViewはtabcontlorの中にあります. でしたら、DataGridView自体は存在していますね。 f1.Controls["タブの名前"].Controls["対象のDataGridViewがあるTabPageの名前"].Controls["dataGridView1"] という感じに辿っていくか… 先の回答でのページのようにthis.Controls.Find("dataGridView1", true)で検索して引っ張り出すか…でしょうか。 # 同じ名前がなければControl[]の先頭が対象のコントロールになるハズです。 # 1つしかなくてもControl[]で返されるコトになりますが。 DataGridView f1_Text = (DataGridView)(f1.Controls.Find("dataGridView1", true)[0]); で行けますかねぇ……。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

>今,確認したところf1_Textがnullになっていました. Form2の該当箇所が実行される時にForm1が生成されていない…とか、DataGridViewが生成されていない…とかではないでしょうか? 表示の順番とかどうなっていますか? 対象のDataGridViewがTabPagesの中だったりGroupBoxの中だったりするとf1.Controls[]で取得できないかも知れませんが…その辺りは大丈夫ですか? # Panelの上に設定した場合も…でしょうかね。 http://dobon.net/vb/dotnet/control/findcontrolbyname.html

Ashgin
質問者

補足

Form1を表示した後にForm2を表示します.また,dataGridViewはtabcontlorの中にあります. この場合,どのようにすればよろしいでしょうか? ご教授よろしくお願いいたします.

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

f1_Text.Rows.Add(Text1, Text2, "→", Text3, Text4); の行にブレークポイントを設定します。 で、ブレークした時にf1_Textはどうなっていますか? f1.Controls["dataGridView1"]; で取得できていないのではありませんか? f1の方がnullで落ちている。 という可能性もあるかも知れませんが……。

Ashgin
質問者

補足

今,確認したところf1_Textがnullになっていました. 正しく取得させるにはどうすればよろしいでしょうか? 重ねてご教授よろしくお願いいたします.

関連するQ&A