• 締切済み

画面呼び出し方法

VB6にて開発中です。 A画面からB画面を表示する際、"B.Show"コマンドを使用しております。 1回目は問題無くB画面が表示されますが、2回目になると、VB自体が 終了してしまいます。 ブレークポイントを使用しステップ実行したところ Showコマンド を発行 した所でVBが終了しております (B画面の Form_Load イベントは発生しておりません) 画面の制御関係でおかしな事を行っていると思うのですか、わかりません。 よろしくお願いします。

みんなの回答

  • fuji1
  • ベストアンサー率29% (109/371)
回答No.1

こんにちは。 プログラミングは奥が深いですね。 さて、今回の質問ですが、B.Show で正しいです。 1回目の B.Show (または B.xxx) の時に B.Form がロードされますが、2度目はすでにロード済みなので、ロードのイベントは出ません。 じゃ、なんで終了するのか、というと、Bのフォームのソースに問題がありそうです。 Bのフォームから他のフォームに移動したときの呼び出し方等、補足してください。 なお、2度目のB.Show では Form.Activate のイベントが出ていると思います。試してください。

nyanaaaa
質問者

お礼

連絡が遅れて申し訳ありません。上記質問なんですが解決しました。問題は呼び出し先のフォームでメモリ共有違反をおこしていました。

関連するQ&A

  • 子画面表示 .NET

    子画面表示は、Dim form2 As New Form2 form2.show Me.close らしいのですが、このform2(子画面)に親画面のcomboboxの月を持って着て表示し、年はユーザが入力、例えば、”2007年7月”と表示させたいのですが、VB.NETでの表示方法を教えて下さい。

  • フォームを閉じる方法

    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()

  • VB2010 の Run画面の処理 に ついて

    VB2010 の Run画面の処理 に ついて お教え下さい  VB2010.Express版を使って ソフトを作って居る者ですが、 [スタート・アップ・プロジェクト]からスタートをしてForm1()を表示させたいのです しかし、その場合には必ず、目下入力中のVB用[コード・エディター]画面と、もう一つ背景が黒一色の[コマンド入力]用の画面と が、一緒に現れて来ます  ソフトをRunさせるとデスクトップ画面の上には、このForm1()だけを表示させたいのですが、目下必ず現れるこれら2画面を表示させない様にするには、どの様なコマンドを入力しておけばよいのか、或いは何か別の回避方法でもあるのか、を 是非 お教え下さい  宜しく お願い致します akqsp より

  • フォームを画面のど真ん中に表示させたいのですが

    フォームを画面のど真ん中に表示させたいのですが、 http://dobon.net/vb/dotnet/form/startposition.html を見たのですがコードの書き方がよくわかりません。 Public Class Form1 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Dim f As New Form1() 'フォームを画面の真ん中に表示する f.StartPosition = FormStartPosition.CenterScreenf.Show() End Sub End Class こうすると、「FormStartPosition.CenterScreenf」の部分に波線がひかれます。 Public Class Form1 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Me.StartPosition = FormStartPosition.Manual Me.Location = New Point(0, 0) End Sub End Class これで左は時に表示する事は出来るのですが、真ん中に表示させるにはどうすればいいでしょうか?

  • ふと疑問に思ったこと。

    現在VB2008をのんびり勉強中のものです。 ふと疑問に思ったのですが、VB6時代では Load フォーム名 で、対象フォームのLoadイベントのみを発生させることができました。 これだと、見た目上フォームを表示せずにLoadイベントを発生させることができました。 同様のことをVB2008でもやってみようと思ったのですが、 フォーム名 = New Form で初期化。 Loadだけを読み込もう・・・・あれ?フォーム先のイベントを何か発生させないとLoadされないぞ!? っていうことに気付きました。 フォーム名.showだとフォームが表示されてしまうし・・・ とりあえずshowで表示させた後、すぐにhideで隠してしまえばいいのですが、もっとスリムなやり方はありますでしょうか???

  • EXCEL2000のマクロ

    Excel2000のマクロで、ブックを開いたときに、 日付をセルに表示したいのですが、 ブックを開いたときのイベントがあれば教えてください。 (VBのForm_Loadみたいな) 日付をセルに表示するコマンドも知りたいです。 わかる方、よろしくお願いします。

  • Form1.vbをイベントなしで動作させるには?

    VB2005初心者で困っています。 Menu.vbとForm1.vb, Form2vb, Form3.vb・・・を作り、Menu.vbのButton1_ClickでForm1.Show()としてForm1.vbに移行し、次にForm1のButton1_clickイベントでExcelからDataを読み込んでGraphを書かせています。(この時は問題なく動作しています) これを、Form1に移行したらすぐにGraphを表示しようとして、Form1.vbの Public Class Form1 Private Sub Button_Clic(Byval sender As System・・・・・)Handles Button1.click   Dim g As Graphics   ・・・・ を変更して、  Private Sub Form1_Load(Byval sender As System・・・・)Handles MyBase.load Me.Show() Dim g As Graphics   ・・・・ と、しましたが、一瞬Graphは表示しますが、すぐに消えます。 また、罫線はまったく表示しません。 Button_ClickイベントなしでForm1を動かすにはどうすればよいのでしょうか?

  • 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をはじめて半年ほどですので、よろしくおねがいいたします。

  • カレンダーの表示

    VB6.0で開発しています。 Form1に自作カレンダーを作りました。(MSFlexGridで) Form2,Form3,Form4でコマンドボタンを押すとカレンダーが表示されるようになっています。例えばForm2でカレンダー上で日付を押すと Form2のテキストボックスへ表示されるようにしたいのですがどうすればいいのでしょうか? わかりにくい質問で申し訳ございません。 よろしくお願いします。

  • フォームザイズを可変した場合

    OS:win2000pro VB:VB6.0sp5 画面1 form_load時、フォームサイズ(Height,Width)=(10470,15360) フォームサイズ変更(BorderStyle=2:可変)に設定しています 終了ボタン 終了ボタンをclickした場合、画面1を閉じる処理を行ないます  CommandButtonの位置  form_load時、(Left,Top)=(13260,9240)  フォームサイズ変更した場合、ボタンの位置が可変しないのか、画面から消えてしまいます どのようにすれば、フォームサイズ変更しても消えないようになるのでしょうか?

専門家に質問してみよう