• 締切済み

開く前のフォームを開かないようにしたい

現在、VB2010で、Windowsアプリを作っています。 Form1から、ボタンで画面遷移を行っているのですが、 Form2でデータを作成する前にForm3に移動しないように MessageBoxで画面表示をさせてからMe.Close()を試したのですが、 Form1の方が閉じてしまい、Closeしない場合はForm3が 立ち上がってしまいます。 何とか、Form1はそのままでForm3が立ち上がらないように したいのですが、いい方法はないでしょうか?

みんなの回答

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

> Form1からボタンで各画面に遷移するのですが、 > Form2でデータが入った状態でしか > Form3を開かないようにしたいのです。 やっぱりわからない。Form2とForm3はどう関係しているのですか? Form2のFormLoadにForm3.Openを書いてあるの? 「各画面に遷移」ということは、Form2を開くボタンと Form3を開くボタンがあるのですか? Form1でボタンを押した処理そのものにMe.Close()を記述しているのでは? 「Me=自分自身」だから、Form1にMe.Close()を書くとForm1.Close()です。

katsumi001
質問者

補足

Form2を開くボタンとForm3を開く画面があります。 なるほど。Form1が開いている時なので、 ひょっとしたらそのような処理になっているかもしれません。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> Me.Close()を試したのですが、 どのFormに記述しましたか? Form2とForm1・Form3の関係が読み取りにくいけど、どういう順で遷移するのですか?

katsumi001
質問者

補足

Form1からボタンで各画面に遷移するのですが、 Form2でデータが入った状態でしか Form3を開かないようにしたいのです。

関連するQ&A

  • フォームのZOrder?

    VB2008でWindwosフォームからボタンを押して、 別のWindowsフォームを開き、そのフォームをクリックすると閉じて、元のフォームに行くプログラムで、 別のフォームを開いた後に、何か別のアプリを全面に持ってきて、同じようにフォームをクリックして、元のフォームが全面にでるかと思えば、別のアプリの下に隠れていました。 Form1.show() ボタンClickイベント     Form2.show() 別のアプリを前に Form2 フォームClickイベント Form1.Show()   <----- 読んでいるのに Me.close() <----- ここがいけない? From1が全面に来ず、別のアプリが上になる。 何か方法がまずいのでしょうか?

  • フォームを閉じる方法

    VB2005 Expressにて開発を行っております。 ログインフォーム、メニューフォーム、各フォームと複数フォームを使用 するアプリを作成中です。 そこで質問させて下さい。呼び出し元フォームを閉じてから呼び出し先 フォームを開くとするにはどのように行ったらいいのでしょうか。 下記が作成中のPGMですが、「Form1からForm2を表示」「Form2からForm1を表示」は正常に動作しますが、再度「Form1からForm2を表示」を行うと 破棄されたオブジェクトにアクセスできません。 オブジェクト名 'Form2' です。 が表示されて「f2.Show()」でエラーになってしまいます。 どなたかご存知の方がいらっしゃいましたらご教授下さい。 よろしくお願いします。 '標準モジュールで下記を宣言 Public f1 As New Form1 'ログイン画面 Public f2 As New Form2 'メニュー画面 Public f3 As New Form3 'メニュー1 Public f4 As New Form4 'メニュー2 'Form1からForm2を表示 F_Form2.StartPosition = FormStartPosition.CenterScreen F_Form2.Show() Me.Close() 'Form2を閉じてForm1を表示 F_Form1.StartPosition = FormStartPosition.CenterScreen F_Form1.Show() Me.Close()

  • (VB2008)ShowDialogしたFormを閉じた時の、画面の挙

    (VB2008)ShowDialogしたFormを閉じた時の、画面の挙動について (VB2008EE、OSはVista) Form1からForm2を(ボタンのクリックイベントで) Dim f As New Form2 f.Show(Me) と記述して表示させたあと、 Form2の(ボタンのクリックイベントで) Me.Hide() として、Form2を閉じる記述を書きました。 で、Form2をShowDialogしてから、Hideを実行すると、 Form2が消えるのはいいのですが、残るForm1が、 ・デバッグ実行時は、VB2008EEのWindowの後ろに隠れてしまい、そのままとなる。 ・リリースビルドでは、さすがにそのままとはなりませんが、一旦Form1が  ちらつきます。 この回避策がありましたら教えてください。 。。。 ここからは、いろいろ実験した結果です。 ・試しに、Me.Hide()の後ろに、Threading.Thread.Sleep(5000)を 記述して実行すると5秒間Form1が後ろのアプリ画面に隠れた後、 Form1が前に表示される。 ・この場合の「後ろの別アプリのWindow」について、その別アプリが VB2008やエクスプローラだとForm2がそのアプリに隠れるのですが、 ExcelやIEだと、Form1が後ろに隠れることがないようです。。。 ・Hideではなく、Closeだと、後ろには隠れません。 (ただし、Closeの場合、Threading.Thread.Sleep(5000)の間はForm2は その前にClose()があっても、表示されたままSleepしその後閉じます) ・さらにShowDialog()でなく、Show()の場合、Owner指定して実行した場合は、 (つまりSHow(Me))全く問題なく、Form1が前面に表示されたまま 他のアプリが前に来ることはないのですが、 Ownerを指定せずにShowしたところ、ShowDialogと同様のことが起きるようです。 もし、これらの現象全体についてしっかりと説明できる方がいらっしゃれば、 説明もしていただけるとうれしいです。

  • 【VB2005】ゲーム開発について

    ちょっとゲーム開発なんて大げさに書いてみました。 もし、VBでゲームを作成するにあたって、 たとえば、画面遷移をスムーズに切り替えできないか?と 考えてます。 簡単に、画面遷移を、下記のような流れにしたいと 考えます。 1:ゲームタイトル画面 2:ゲーム画面 3:ゲーム保存画面 この3つの画面があるとして、 1)のタイトル画面で、ボタンを押下して 2)のゲーム画面に遷移する際にVBだと どのようにすればゲームタイトルから ゲーム画面にスムーズに画面遷移するのか 悩んでます。 Form1から、Form2を開く方法など 画面のシーンごとに管理できて楽だと考えたのですが、 いったんForm1を閉じてForm2を表示するとかじゃなくて Form1からForm2をスムーズに表示する方法など あれば、そういうのを使いたいと考えてます。 長くなりましたが、コツコツと 画面遷移ごとに使うコントロールを モジュールで管理して、表示に必要な コントロールを都度、表示、非表示、 座標などのプロパティを設定する方法が一般的なのでしょうか? どなた教えてください。

  • フォームロードについて

    VB2008で、Form_Load()に Me.Visible = falseや Me.Close()としてもフォームの非表示やフォームを閉じたりしないのですが、なぜなのでしょうか? 最初に起動した場合に、Form_Loadで初期設定を行った後に、自動的に直ぐにフォームを非表示や閉じることをしたいです。

  • VB2005で、フォームを初期化したいのですが、教えてください。

    VB2005で、フォームを初期化したいのですが、教えてください。 VB2005で、フォームにデータベース内容(ORACLE)を表示するプログラムを作っています。その際、F8キーを押すと画面内容(テキストボックスやDatagridviewの編集内容)を初期ロード状態に戻すようにしたいと思い、F8キー押下時のイベントに、以下のようにプログラムしました。 dim frm as form frm = new form1 me.close frm.show() としてみましたが、me.closeで、プログラムが終了してしまうようです。 どうするのが適切かお教えください。

  • 【VB.NET2003】フォーム1を閉じてフォーム2を表示させたい

    プログラミング初心者でVB.NET2003使用です。 検索したところ、それらしいものがあったのでチャレンジしましたがダメだった(ちょっと違う?)ので質問させていただきます。 http://oshiete1.goo.ne.jp/qa1757174.html 《やりたい事》 Form1に配置したボタン1をクリックするとForm1を閉じてForm2を表示 Form2に配置したボタンAをクリックするとForm2を閉じてForm1を表示する。 これをやりたいのですが、なかなかうまく行きません。 ボタン1をクリックしてForm1を閉じないでForm2をShowかShowDialogでモードレス表示 ボタンAをクリックしてForm2をCloseさせてForm1を表示させる事(元々閉じていないので)は出来ます。 可能ならばどちらかを必ず閉じる方法でやりたいと思います。 可能でしょうか? 解決策やヒント、良いサイトがありましたら回答をお願いします。

  • フォームを最前面に表示したいです。

    VB.NET、WinXPなのですが、 form1のボタンを押して、指定のフォルダを開いた後に 再度そのボタンのあるform1を最前面に表示したいのですが、  System.Diagnostics.Process.Start("C:\WINDOWS")  Me.Activate() などとしてファイルがたくさんあるフォルダを開くと完了まで時間がかかり 次のMe.Activate()の命令が無視されてしまうようで form1がアクティブにならないまま終わってしまいます。 少し待機しようと  System.Diagnostics.Process.Start("C:\WINDOWS")  System.Threading.Thread.Sleep(500)  Me.Activate() とすると正常に開くのですが、ファイルが少なくても 高速なマシンでも一律0.5秒停止してしまうのではなく、 表示が完了されているかどうかを判定するようにしたいのですが、  Dim P As Object P = CreateObject("Shell.application") P.open("c:\windows")  Do While P.Busy = True : Loop などのように待機する方法があったら教えて頂きたいです。↑はエラーになってしまいました。 フォルダを開くコードを  CreateObject("Shell.Application").Open("C:\WINDOWS") に置き換えてみたり、  Me.Focus()やMe.show() などを試してみたのですが、うまくいきませんでした。 毎回申し訳ありませんが、よろしくお願いいたします。

  • フォームがアクティブでない時にボタンを表示させないようにするには?

    VB2005を使用しています。どうぞよろしくお願いします。 質問の内容ですが、ボタンが一つあるFormとExcelのウインドウが同じ画面内に表示されている時、Formがアクティブの時はボタンが表示され、Excelのウインドウがアクティブの時はFormのボタンが消えるようにしたいのですがどうしても分かりません。 どうぞよろしくお願いします。

  • VBでの質問です

    VBでの質問です Form1と2があるとします Form1とあるボタンを押すとForm2が開きFormが閉じるようにしたいのですがうまくいきません。どうしてでしょうか? Form1のコードで Form2.show Me.Close() と記述しましたがどこが違うのでしょうか。

専門家に質問してみよう