• 締切済み

子フォームから親フォームへのデータの受け渡し

いつもお世話になっております。 VB.NETの質問です。 親フォームから子フォームを開き、子フォームで検索した結果を親フォームに返したいです。 はじめはテキストボックスへ表示させており、何の問題もなく出来ていたのですが、 仕様を変更してコンボボックスやラベルのテキストに表示させるようにしたら、子フォームからデータを取れなくなりました。というか表示されなくなりました。子フォームのme.close()する直前の変数の値にはデータが入っているのですが・・・ なんでなんでしょうか? 開発一筋でやられてきた方には、本当に初歩的な質問だと思いますが、 よろしくお願い致します。

みんなの回答

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.1

> 仕様を変更してコンボボックスやラベルのテキストに表示させるようにしたら コンボボックスやラベルの表示が原因である可能性 は小さいです。「仕様を変更して」で変更したコードが まずいのでは無いかと思います。 基本に忠実なコードを書けば問題ないと思います。 他人が基本から離れた考えで書いたコードを想像するのは 困難ですので、具体的に何をどう変更したのか説明して 下さい。 よくあるのはインスタンスの管理ができておらず、 子フォームが複数 Load されている事です。 画面上に表示されている子フォームとは別に 非表示の子フォームが作成されてしまい、親 フォームから参照しているのはそちらになって いる場合があります。 値取得しているコードの直前で  値取得対象の子フォーム.Show() を実行してみて下さい。子フォームが複数 表示されればそれが原因です。 基本的には余分に子フォームのインスタンスを 作成しない(= New しない)ことで解決できますが、 フォーム名を直接指定するコードを書くとVBが 裏で勝手にデフォルトのインスタンスを生成する ので、そこまで理解してコードを修正する必要が あります。

rh490820
質問者

お礼

ありがとうございます。 こちらは別の方法で解決できました。

関連するQ&A

  • MDIの親フォームから子フォームの操作

    VB2010のMDIの親フォームからの操作に関してです。 MDIで設定された親フォームのMenuStripから子フォームのTextBox1のTextの値をMsgBoxで取得したいのです 出来る事なのかどうか分からないですが、初歩的な質問でご迷惑をお掛けします・・・

  • 子フォームの情報を親フォームに利用する

    Visual C++初心者です。visual studio2005を使用しています。 まず親フォームで名前を入力させ、「次へ」を押すと子フォームが出て来ます。 そこで好きな食べ物を入力させて「決定」ボタンを押すと子フォームが閉じ、親フォームのテキストボックスに 「○○さん、こんにちは!好きな食べ物は●●ですね」というメッセージを表示させる・・・というフォームアプリケーションを作りたいのです。 子フォームの表示は分かるのですが、そこで入力させた情報を親フォームに反映させる方法が分かりません。 できれば初心者でも分かる回答をして頂ければ有難く思います。 よろしくお願いします。

  • データの保存方法について

    VB.netについての質問です。 フォームにテキストボックスとコンボボックスとボタンが取り付けられている状態で、ボタンを押すとテキストボックスとコンボボックスのデータを、指定したフォルダにテキストファイルで保存させる、というプログラムは可能でしょうか? 保存形式はテキストファイル以外でも構いません。 よろしくお願いします。

  • 子フォームから親フォームのオブジェクトを参照したい。

    こんばんわ。 いまVB.Net2005でプログラミングしている者です。 子フォームから親フォームのオブジェクトを参照したいのですが, うまくいきません。 親フォームにListBox1を置き, ここに入力された内容を 子フォームで下記のように参照しようとしました。 Dim 子フォーム As New 子フォーム Label1.Text = 親フォーム.ListBox1.SelectIndex としたのですが, 親フォームでListBox1に0以外のリストを選択したのに, 子側に来ると親フォーム.ListBox1.SelectIndexの値が 0になってしまい,親側での選択内容が反映されません。 どうすれば正しく参照できるでしょうか? 教えてください。よろしくお願いします。

  • 子→親ウインドウへデータを受け渡し、子ウィンドウを閉じる。

    このような処理はできないでしょうか? 子ウィンドウはコード番号の検索用。該当のコードのリンクをクリックすると、そのコード番号を親ウィンドウのテキストボックスへ落とし込む。そのタイミングで、子ウィンドウは閉じる。 子→親ウインドウへのデータの受け渡しと、子ウィンドウのクローズを同時に行うようなイメージです。 よろしくお願いします。

  • フォーム上で作成したデータをエクセルシートに転記

    テキストボックスやコンボボックスなどを配置したフォームを作成してデータをエクセルシートと保存していきたいのですが、上書きされてしまいデータが蓄積できません。 また、保存したデータをフォーム上に呼び出し若しくは検索して、データ修正を行った後に上書き保存できるようにしたいので、よろしくお願いします。 ※テキストボックスやコンボボックスなどのタグに対象のセル値を指定しています

  • C#のフォーム間のデータの受け渡しについて

    はじめまして。よろしくお願いします。 最近C#をはじめましたがいきなりつまづいてしまいました。 クラスを利用しフォーム間でデータの受け渡しをしたいのですがどうすればいいのでしょうか? 処理は以下のようになっております まず、フォームが2つあります。フォーム1とフォーム2とします。 最初に起動されるのがフォーム1で、フォーム1にはボタンが2つあります。ボタンA、ボタンBとします ボタンA、ボタンBどちらのボタンを押下しても、フォーム2が開きますがどちらを押されてたかをフォーム2のテキストボックス(テキスト2とします)に表示します。 クラスですがフォームが2つとデータ保持のためのクラスが1つ(データ保持クラスとします)があります。 データ保持クラスにはint形のBtnClickプロパティ(get,set)を作成しております。, フォーム1のボタンA押下時処理  データ保持クラスのBtnClickに1を格納し、フォーム2を開きます。 フォーム1のボタンB押下時処理  データ保持クラスのBtnClickに2を格納し、フォーム2を開きます。 フォーム2起動時処理  データ保持クラスのBtnClickから値を取得しフォーム2のテキスト2へ表示します。 で、肝心の質問ですが、データ保持クラスの宣言はどこにすればいいのでしょうか? また、インスタンスはどのタイミングで作成すればいいのでしょうか? フォーム1にpublicとして宣言しインスタンスを作成し、ボタン押下時にBtnClickプロパティーにデータを格納し・・・ というところまではできたのですが、フォーム2で値が取得できないどころか、コンパイルが通りません。 あと、こういうデータ保持クラス使い方って一般的ですか?? 長々と脈略もなく書きましたがご教授ください。どうぞよろしくお願いします。

  • ラベルでの移動でテキストの受け渡し

    ラベル1にあるボタン(複数)からインスタンス名key_textという名前の テキストボックスにボタンそれぞれの意味をもつテキストを表示させています。(表示といってもキャンバスの外なので実際には見えません) 例えばラベル1からラベル2に移動し、キャンバス外に隠していたkey_textを表示させたいのですがどうすればいいのでしょう? 同じ方法でラベル1で隠していた変数扱いのテキストボックスを ラベル2で表示させることはできました。 他にもhtml tagを使用した変数扱いのテキストボックスも同様に ラベル1で隠しラベル2の移動で表示。 ともにラベル1、ラベル2での表示内用は同じものです。 たまたまkey_textとインスタンス名をつけているものだけできないので 困っています。試しにこのテキストボックスの変数名にkey_textと名前をつけ試してみると_leve0と表示されてしまい。ボタンから受け渡しているテキスト内容を表示できませんでした。 なぜできないのかわからなくなってしまったのでご教授ください。 環境 flash mx2004 , mac os10.4

  • フォーム間のデータ受け渡し2

    Visual Studio 2005のフォームアプリケーションでプログラミングを行っているものです。前回と似たような質問になるのですが、微妙に状況が違っていてどうしてよいのかわかりません。まず、メインフォーム(Form1.h)でサブフォーム(pic0.h)を呼び出しているのですが、プログラムを見てお分かりのように起動時に呼び出ししているので最初に子フォームのpic0.hが現れます。この子フォームを消すことでメインフォームが現れるといった感じになっています。私がしたいことは、まずメインフォームの上でサブフォームを表示させ(メインフォームが表示された後にサブフォームが表示されてほしい)、さらにpic0.hでテキストボックスによる入力や出力で取得されたint型やdouble型のデータをForm1.hに引き渡すことです。以下がプログラムなのですが、どのようにプログラムしていいのかお分かりの方がいましたら御教授お願いします。 /*** メインフォーム(Form1.h) ***/ #pragma once #include "pic2.h" #include "pic0.h" // 省略 // #pragma endregion private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { pic0 ^p0 = gcnew pic0(); //起動時呼び出し p0->ShowDialog(this); } /*** サブフォーム(pic0.h) ***/ #pragma once // 省略 // #pragma endregion praivate int a,double b; a = double::Parse(textBox1->Text); //例1 b = double::Parse(textBox2->Text); //例2 // 省略 // /*** pic0.cpp ***/ #include "StdAfx.h" #include "pic0.h" #include "Form1.h" using namespace pic;

  • Access2003においてフォームとフォームでのデータの受け渡し

    生徒が新たに検定試験を受ける際、誰がどの検定試験を受験するかを登録する受験者登録フォームがあります。入力をするときに、生徒テーブルを作ってあるので、そこから、入力画面にデータをもってきたいのです。500名ほどいるので、ふりがなをもとに検索をかけます。それが、生徒検索フォームです。フォームヘッダーにふりがなを入力するテキストボックスをつくり、その下に、検索結果を表示するようになっています。検索結果を表示できたら、それをダブルクリックすると、受験者登録フォームにダブルクリックしたデータが入るようにしたいのですが、それが分かりません。サブフォームからメインフォームに受け渡す方法は過去のものにあったのですが、まったく別のフォームに受け渡しをしたいのですが、宜しくお願いいたします。

専門家に質問してみよう