• 締切済み

Form間のデータの受け渡し

VB2005で Form1でボタン操作を行ってForm2を表示させ、 そこで簡単なデータの入力を行って、 そのデータをForm1で使用する、ということをしたいのですが、 Form間のデータの受け渡しはどうしたらいいのでしょうか?

みんなの回答

  • meruty
  • ベストアンサー率81% (9/11)
回答No.3

こんばんわ。merutyです。 VB6の場合しか知らないのですが、VB2005でもForm.Show()の仕様が変わっていなければ以下コードでモーダル表示できると思います。 'Form をモーダルで表示する Call Form.Show(vbModal) 'Form をモードレスで表示する Call Form.Show() 単なるフラグの違いです。

  • JeanneNet
  • ベストアンサー率48% (100/208)
回答No.2

こんにちは、じゃんぬねっと と申します。 Form1 が呼び出し元、Form2 が呼び出し先なので、 Form2 は親である Form1 に対して関与しないデータの受け渡しが望ましいです。 Form2 に Public なプロパティを定義する方法を説明しますと、 Dim frm2 As New Form2() frm2.定義したプロパティ = 渡したいもの If frm2.ShowDialog() = DialogResult.OK Then   Me.TextBox1.Text = frm2.返したい値 End If となります。 この他、メソッドの引数として渡す方法もあります。 もちろん、メソッドも Public として定義する必要があります。 さらには、メソッドの戻り値で結果を受け取るということもできます。 Dim frm2 As New Form2() Dim result As ClassA = frm2.ExecuteHogeHoge("これを渡す", "あれを渡す") 即時的な動作が伴う場合はメソッド、 クライアントの入力待ちが発生するのであれば ShowDialog メソッド + プロパティ が良いでしょう。

回答No.1

私が良く使う手法は ・Form2で外部に渡す変数をPublic宣言またはPropatyとする。 ・Form1からForm2を表示する時は、モーダル(ダイアログとして)開く。 ・Form2からForm1に戻る時には、Form2をHideする。(Unloadはしない) ・Form1でForm2の変数を取得後、Form2をUnloadする。 VB6の時からの方法なので命令が異なっているかも知れません。

murano47
質問者

お礼

ご回答ありがとうございます。 「モーダルとして開く」といのは Form2.show() というコマンドとまた意味が異なるのでしょうか?

関連するQ&A

  • C#でのForm間のデータ受け渡し、保存について。

    C#でシステム作成をしています。WindowsFormApplicationです。 どのようなシステムかと申しますと、学習システムです。 親フォームForm1には、問題ページForm2へ行くボタン、保存ボタン、開くボタンが配置されています。 問題ページForm2へ行くと、数十個の数字labelがあり、この各labelから実際の問題へ、つまり、Form3、Form4、…と行きます。 さらにForm3、Form4、…の各問題を終える度に、Form3、Form4…からその都度別Forms(集計のsとしておきます。)を開いて集計していきます。(数値を扱うので。) Form1からForm2は同時表示、Form2のlabelからのForm3、4…はForm2をHideして表示(Hideについては後述)、Form3、4…からFormsは、もちろん3、4を参照しながら集計するので同時表示です。 Form2のHideについては、例えばForm3の問題を解き、Formsを開いて集計したなら、Form3をCloseすると、Form2を再度ShowしてForm3へのlabelのForeColorを変化させます。同時にFormsはHideします。(また次のForm4で使うため。)変色labelを再度押すと、「解答済みです」とMessageBoxに表示して行けなくなります。 このように進めていくタイプのシステムを作成しています。 以上まではうまくいきました。 ここからが問題です。 Form2のlabelの色は、Form2を閉じない限りはもちろん保持されます。しかし、閉じて再度Form1から表示すると色が保持されているプログラムを書きたいのですが、どのようにすればいいでしょうか? ちなみにHideではだめだと思います。なぜなら、初めてこのシステムに取り掛かる際、Form1からForm2を表示する時に、HideされたForm2はまだ存在しないからです。 だからデータの受け渡し、つまり、Form2を閉じる時にForm1へデータを渡し、再度開く際にForm2へそのデータを返す、というイメージですかね。 インターネット上では、テキストボックスのテキストデータの例ばかりでしっくりきません。 渡すとしてもForm1のどこに渡すのか(どこにプログラムを?)も分かりません。 Form2から受け取る際は、Loadイベントでしょう。Form2から渡す際はClosedイベントで渡すとは思いますが…。 そしてあと一つ、Form1の保存ボタン、開くボタンのプログラムです。 学習システムで少しずつ進めていくプログラムですから、この日はここまで、と保存していく必要があります。 それを開く意味で、開くボタンも付けています。 このプログラムも難しくて分からないところですが、これも質問すると質問が多くなるため置いておきます。(というより先述の受け渡しのプログラムの質問が優先です。) 質問は、このシステムのForm1から保存することで、きちんと進度は保存されるかということです。 ある日、あるところまで問題を解き(labelの色を変え)、集計し終えたとします。 そして保存して、別の日に開くとForm1が現れます。 このForm1からForm2へ行くと、ちゃんと色が保持されたプログラムは書けるでしょうか? (ちゃんとデータの受け渡しプログラムを書いたと想定。要はlabelの変色のみ保存できればいいのです。) そしてFormsへ飛ぶと、データは保持されているでしょうか? Formsは先述しましたが、集計し終えるとHideするのみです。つまりFormsは初めて表示したらもうCloseはしません。 このようにHideしたFormの状態も保持することはできるでしょうか?

  • モジュール間のデータ受け渡し

    初心者質問で申し訳ございませんが、 ご教授、お願いできませんでしょうか? 環境は XP, VB,net2005を使用しています。 言葉が適切かどうかわかりませんが、 別ファイルのモジュール同士でのデータの受け渡しはどのように行えばいいのでしょうか? たとえば、Form1.vbに定数宣言してある「定数1」を 別で作成したModule.vbには定数を読み込むにはどのように行ったらよいのでしょうか? パブリック変数の位置で宣言したのですが、参照できないようで… ご回答いただけましたら幸いです。

  • あるFormから別のFormを発生させたい

    VB超初心者です。 VB2005で最初のForm1にButtonを配置し、そのボタンを押すと、別のウィンドウ(別のForm?)が現れて、 ちょっとしたデータを入力するとその画面が消えて、元の画面に戻るというプログラムを作りたいのですが、 どうしたらいいのでしょうか?

  • VB6で2つのFormを使ってプログラムについて

    環境:WindowsXp VB6(SP?) 操作:2つのフォーム(1と2)1からエクセルのデータを呼び込み⇒表示⇒さらにデーター追加⇒     コマンドボタンを押して2を表示⇒一部1のデータをラベルに表示してさらにデータ追加⇒     コマンド」ボタンを押して1と2のデータをエクセルの帳票に登録・保存     以上のことを繰り返す。     この間2フォームの登録・保存で2のフォームはアンロードする。 質問:1順目はうまくいくのですが、2順目になると、パブリック変数を使用して、テキストやラベルに表    示された、ものはうまくデーターが反映されるが、それ以外は、フォーム上では表示されていて     もdebug.printすると、データーが空欄になっているため、登録・保存できない。     例:'****Form1***** Public ex As String Form2.Show End Sub '******Form2******** Private Sub Form_Load() Label1 = Form1.ex End Sub このとき、2順目のForm1.exは””でもForm2のLabel1にはデーターが表示されている。             なにがいけないのかが、いろいろネットで調べてもよくわからないので、どなたか教えてくだ      さい。(initilizeとかをせっていすべきなのか?)      ただ、まだVB6をはじめて半年ほどですので、よろしくおねがいいたします。

  • テキストの受け渡しの不具合

    1.html → 2.cgi へフォームを使ってデータの受け渡し。 例) 1.htmlのテキストエリアに あ い う え お と入力をし、2.cgiを実行すると、 あ い う え お ときちんと表示されます。 ($FORM{'hoge'}と指定。) この2.cgiから1.htmlで入力されたデータに修正を加える場合に「入力しなおす」というボタンを加えました。 (3.cgi) そのために、2.cgiのデータを3.cgiに渡す必要があるため、 $FORM{'hoge'}    ↓ $FORM{'hoge'}<INPUT TYPE=HIDDEN NAME=hoge VALUE=$FORM{'hoge'}></INPUT> と変更しました。 すると、2.cgiで表示されるデータが、 あ い う え おい う え お> となってしまうのです。 他の項目は平気なのですが、改行がされる箇所(TEXTAREA)にこの現象が起こっています。 回避策を教えてください。

    • ベストアンサー
    • CGI
  • データの受け渡し

    VB.NETでテキストで入力した値を検索画面のテキストで表示していて、 検索されている状態にしたいのですが。 検索画面のほうはdllから読み込んでます。 画面:フォーム 検索画面:クラスライブラリ 画面からTextBoxの値は読み込めるのですが、データが表示できません TextBoxで入力した値:2 検索画面で表示されているデータ 1 あ 2 い 3 う 1.TextBoxで2を入力 2.検索ボタン押下で開く 3.検索画面に2が表示されていてコード2のデータが表示されている (2 い)

  • From間のデータ受け渡しについて(VB6)

    VB6初心者です。 たとえば、From1とFrom2があり Form1からFrom2を表示 Form2でTEXT(”ABC")を入力 From2を閉じ Form1でForm2で入力したTEXT(”ABC") を受け撮りたいのですが。 どうすればいいですか? 現在、Form1からForm2は  Form1内から   Form2.Show   で表示しています。 よろしくお願いします。

  • form1のコマンドでform2を呼び出す方法を・・・

    御教授してください。 現在、研修でVBの演習問題で社員名簿を作成してます。 詳細 1、form1に追加、更新、削除のコマンドボタンがあります。  2、その際に追加、更新をクリックするとform2の社員名やら、コード、TELL、住所の入力formが表示されます。3、追加、更新で1つのform(form2のことです)を共有?しているような状態で書かないといけない(追加、更新をクリックしても同じfrom2がでて異なる点はfrom2の一番下のコマンドボタンの追加と更新が変わります)これをVBでどのようにして記入すればよろしいでしょうか? form1→追加クリック→form2のコマンドボタンが追加表記になり、テキストに入力したものが追加できる。 form1→更新クリック→form2のコマンドボタンが更新表記になり、テキストに入力したものが更新できる *ここで更新と書きましたがSQLサーバーをつかってます。入力したものがサーバのDBに追加なり更新される状態です。 DB&VBの複合演習問題みたいな感じです。 宜しくお願いします。

  • formでテキストとファイルタイプの同時受け渡し

    送信ボタンが押下されたとき、同じ遷移先の画面に「テキスト」「ファイル」タイプのデータを同時に受け渡せないことがわかりました。 (1) <form action="al.jsp" method="POST"> ⇒<input type="radio" name="1" value="2">の受け渡しが可能 (2) <form action="a.jsp" enctype="multipart/form-data" method="POST"> ⇒<input type="file" name="uploadfile" size="50">の受け渡しが可能 送信ボタン押下時に(1)テキスト(2)ファイルデータを同時に受け渡し、 a.jspからrequest.getParameter("1"); で値を取得する方法を教えて頂けないでしょうか。 現在は、 <form action ~> (1)input (2)input </form> の形式になっています。

    • ベストアンサー
    • HTML
  • formでテキストとファイルタイプの同時受け渡し

    以下の質問の続きなのですが、JAVAカテゴリを勧められましたのでこちらで質問させてください。 http://bekkoame.okwave.jp/question/selectbestanswer?aid=18429563&qid=6529772 使用言語はJSPです。 「送信ボタンが押下されたとき、同じ遷移先の画面に「テキスト」「ファイル」タイプのデータを同時に受け渡せないことがわかりました。 (1) <form action="al.jsp" method="POST"> ⇒<input type="radio" name="1" value="2">の受け渡しが可能 (2) <form action="a.jsp" enctype="multipart/form-data" method="POST"> ⇒<input type="file" name="uploadfile" size="50">の受け渡しが可能 送信ボタン押下時に(1)テキスト(2)ファイルデータを同時に受け渡し、 a.jspからrequest.getParameter("1"); で値を取得する方法を教えて頂けないでしょうか。 現在は、 <form action ~> (1)input (2)input </form> の形式になっています。 」

    • ベストアンサー
    • Java

専門家に質問してみよう