• ベストアンサー

実行時に現れるフォームの変更の仕方について

掲題の件について質問なんですが、 複数のフォームを作った場合、 実行時に最初に現れるフォームを変更するにはどうしたらよいのでしょうか? 最初に作ったフォームの初期値のVisibleをfalseにして、後から作ったフォームの同初期値をtrueにしたところフォームが現れなくなってしまいました。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

> フォーム1のみ初期値がvisible=trueで実行時に現れるようにし、フォーム2は初期値がvisible=falseでフォーム1に設置したボタンのみで現れるようにしておきます。 フォームの Visible は関係ないですのでデザインの段階で True にしときましょう。 Visible は「すでにメモリ上にロードしているフォームを画面に表示するかしないか」という項目です。 「フォームを使う/使わない」「フォームをロードする/しない」とは違います。 <現状> Form1 がスタートアップ フォームになっている。 Form1 のボタンで Form2 が表示されるようになっている。(Form2.Show とかかな?) <要望> Form2 をスタートアップ フォームにしたい。(Form1 はどうなるのかはとりあえず置いといて) <方法> プロジェクトのプロパティに「スタートアップ フォーム」という項目がありませんでしたっけ? ちと VB 6 は何年も触ってないので覚えてないのですが・・・ スタートアップ フォームの項目で、アプリケーション実行時、最初に表示されるフォームを指定できたと思います。

yoshi004
質問者

お礼

ありがとうございます。 そのような設定やコードがあるか探しておりました。 スタートアップフォームの設定を探してみます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.2

VB のバージョン。 どういう条件で初期フォームを変えたいのか。 って所、教えてください。 とは言え、初期フォームを変更するってことは、アプリケーションのエントリポイントを Sub Main(サブのメインっちゃぁヘンな言葉だよな・・・)にして、そこで条件分岐するのが一番素直なやり方でしょうね。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

困っているのでしょうが、、、、、このままではアドバイスのしようがありません。 まず、VBのバージョンがわかりません。 >最初に現れるフォーム 「モジュールからの起動(Sub Main)」なのか「フォームからの起動」なのかがわかりません。 >後から作ったフォーム これをどのタイミングで、どのように呼び出しているのかがわかりません。 もっと情報公開する必要があります。

yoshi004
質問者

補足

すみません。 VB6.0を使っております。 フォーム1、フォーム2という順で一つのプロジェクト内で複数フォームを作り、それぞれをボタンなどで行き来できるようにしておきます。 フォーム1のみ初期値がvisible=trueで実行時に現れるようにし、フォーム2は初期値がvisible=falseでフォーム1に設置したボタンのみで現れるようにしておきます。 この状態だと実行時にはフォーム1が現れ、ボタンを押すとフォーム2が現れます。 しかし逆にフォーム1の初期値がvisible=falseでフォーム2は初期値がvisible=trueで実行するとフォーム2が現れず、コードが画面に表示されたままになります。 もしフォームがツリー状で親と子が作られ、最初に作られるフォームが親になってしまうなら、親と子を入れ替える方法はあるのでしょうか。 コードが書けずすみません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • デザイン時のVisible=Falseは実行時に変更できない?

    VB2008です。 フォームデザイン時に、コントロールのVisibleをFalseに設定していると、実行時にTrueに設定してもコントロールが見えません。(実行時エラーも出ません。) 私の環境では、ほぼすべてのコントロールが同じ挙動をします。 もちろん、デザイン時にVisibleをTrueにしておいて、実行時にコードでFalseにすると見えなくなりますし、Trueを与えてやると再度見えるようになります。 これは、言語の仕様なのでしょうか。

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

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

  • 【Access】フォームを閉じる際の制御について

    AというフォームからBというフォームを開く際、AフォームのVisibleをFalseにし、Bのフォームを閉じる際、AというフォームのVisibleをTrueにするようにしました。 そうしたところ、Bというフォームを開いた状態でAccessの右上の×ボタンをクリックすると、エラーが出るようになりました。 エラー内容より、上記手順の場合、すでにAフォームが閉じている状態で、AフォームのVisibleをTrueにしようとしているためだと思いました。 そのため、Aフォームが開いている場合のみ、AフォームのVisibleをTrueにしたいと思ったのですが、どのように記述すれば良いか分からなかった為、アドバイスいただける方がいらっしゃいましたら、ご教示の程よろしくお願いします。 以上、宜しくお願いします。

  • 実行時はEXCEL自体を非表示にし、印刷時はワークシートのコントロール(Microsoftバーコードコントロール9.0)を表示したい

    EXCEL2002sp3です。 実行時はEXCEL自体を非表示にし、印刷時はワークシートのコントロール(Microsoftバーコードコントロール9.0)を表示したいと思います。 Application.Visible = False 実行後、コントロールのあるワークブックをOPENすると、Application.Visible が True となりEXCELが表示されてしまいます。 バーコードのプロパティのVisibleをFalseに設定してから、実行させると、EXCELは表示されないのですが、今度はバーコードが印刷されません。この時バーコードのプロパティのPrintObjectはTrueにしています。 何か間違っているのでしょうか?

  • Visual C#にてフォーム非表示時のタイマー

    Visual C# 2010でGUIプログラムを作っています。 フォームを最小化した時にタスクトレイにのみアイコンを表示する機能がついています。 タイマーで1分ごとに処理する必要があるのですが、最小化時(Form.visible = false)にだけ処理を実行してくれません。 最小化していない通常のフォーム表示の時はタイマーが正常に動作し、1分ごとに一定の処理をしてくれます。 目的は最小化時にタスクトレイにのみアイコンを表示し、1分ごとに処理をし、 特定の条件に当てはまった場合はアイコンの上にバルーン表示する事です。 タスクトレイにのみ表示している時でもタイマーで一定時間ごとに処理することはできた気がするのですが、 何が原因かわかりませんがいつの間にか出来なくなっていました。 どういった対策をすればよいでしょうか? private void Form1_Resize(object sender, EventArgs e) { if (OptionData.TaskTray == true) { if (this.WindowState == FormWindowState.Minimized) { //フォームを非表示にする this.Visible = false; //タスクトレイにアイコンを表示する notifyIcon1.Visible = true; } } } private void timer1_Tick(object sender, EventArgs e) { DataUpdateButton.PerformClick(); } private void notifyIcon1_DoubleClick(object sender, EventArgs e) { //フォームを表示する this.Visible = true; if (this.WindowState == FormWindowState.Minimized) { //ノーマルウィンドウに戻す this.WindowState = FormWindowState.Normal; //アクティブにする this.Activate(); if (OptionData.NoTaskTrayIcon == true) { //タスクトレイからアイコンを削除する notifyIcon1.Visible = false; } } }

  • 【VB.net】フォーム間でのやり取りについて

    先日、同じような質問をさせて頂いたのですが、 解決に至らなかったため、もう少し質問内容を工夫しますので、再度質問させてください。 ・実行したいプログラム フォーム1のボタン1をクリックすると、フォーム2を開くと同時にフォーム2ボタン1がvisible=Trueになる。 フォーム1のボタン2をクリックすると、フォーム2を開くと同時にフォーム2のボタン1がvisible=Falseになり、ボタン2がvisible=Trueになる。 ・書いたコード ---------------- Public Class Form1 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim f As New Form2 f.Owner = Me f.Show() DirectCast(Me.Owner, Form2).Button1.Visible = True DirectCast(Me.Owner, Form2).Button2.Visible = False End Sub Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click Dim f As New Form2 f.Owner = Me f.Show() DirectCast(Me.Owner, Form2).Button1.Visible = False DirectCast(Me.Owner, Form2).Button2.Visible = True End Sub End class ---------------- ・問題点 「nullreferenceexceptionはハンドルされませんでした オブジェクト参照がオブジェクト インスタンスに設定されていません。」 というエラーが発生します。 「DirectCast(Me.Owner, Form2).Button1.Visible = True」の部分のエラーです。 手書きで申し訳ありませんが、書きたいプログラムの参考画像も載せておきます。 数日前より調べては試し調べては試しと試行錯誤していますが、 正直手詰まりになっており、非常に困っております。 この他にも、フォーム間で命令を出しあいたい場面が多々あるのですが、 プロパティを変える程度のコードでつまずいていて、先に進めません。 手直しした簡単なサンプルコードを書いて頂けると非常に助かります。 以上、何卒よろしくお願い致します。

  • VBAでコードから新規フォームを作成する時にコードが見えてしまう

    '新規フォーム作成 Set myFrm = CreateForm 'モジュールセット Set myMdl = myFrm.Module 上記は新規フォームを作る時のコードの一部抜粋です。 コーディングより新規フォームを作成すると、実行時にそのコードにステートメントが来ると途中から中断が許されない状態になり、必ずコードが見えてしまいます。 実行すると最初はフォーム(ビュー)の状態なのに、その部分に来るといきなりコードが見えてしまう(一瞬ですが)のはすごく困るのでなんとか解決する方法はないでしょうか? フォームを固まらせてコードを隠すような処理をしているのですがどうしてもうまくいきません。どうすればいいでしょうか? ちなみに私の試したのは オブジェクト.application.visible = false みたいなことをしているのですがフォームを作成している時の対象オブジェクトが何かわからなくてできませんでした。

  • ACCESS2016 フォームのラベルについて

    お世話になります。 ACCESS2016を使い、製品確認フォームの中に「未確認」と言うコントロールにチェックがあると、フォームの下の方にラベルで「確認中」と表示されるようにしたい のですが、何故か全てに表示されてしまいます。 フォームの読み込み中のイベントを使って下記のようにしているのですが、だめでした。フォームのデータは、1000件あり、チェックが入っているものだけに、「確認中」の文字を表示させたいのです。イベントの仕掛ける場所が間違っているのでしょうか If [未確認] = -1 Then Me!ラベル1200.Visible = True If [未確認] = 0 Then Me!ラベル1200.Visible = False ※ラベル1200="確認中" 宜しくお願い致します。

  • マウスクリック時のフォームについて

    VS2005で勉強中の初心者です。 今実験的につくっているアプリがあるのですが わからないところがあるので質問させて下さい。 今仮にフォーム1とフォーム2があるとして フォーム2はプロパティでTopMostをTrueにしてあるとします。 ここで例えば、フォーム1のコントロールを操作し その後フォーム2のボタン1を押す操作をしたいような場合 フォーム2のボタンを押下しようとクリックしても 最初の1度目ではフォーム2がアクティブな状態になるだけで ボタンを押す行動が実行されません。 フォーム2からフォーム1へ移る場合も同じ状態になります。 どちらのフォームがアクティブな状態だとしても 操作をすぐに受け入れるように作りたいと思って マウスイベントによってフォームの状態を変更するようなものを 書こうと思ったのですが それは遠回りな方法で、本当はフォームのプロパティ等で簡単に 設定できるものなのかもしれないと考え、質問させていただきました。 つたない説明で申し訳ありませんが よろしくお願いいたします。

  • 実行時エラー7「メモリが不足しています」

    アクセス2010なのですが たまにですが、なぜこんなところでエラーが発生するの!?ってところで、 実行時エラー7が発生します。 今も発生しました。 With Forms(strFormName) .Lb_No.Visible = False .Lb_ID.Visible = False End With の.Visible = Falseの部分です。 いつもはこんなところでエラーにならないのに、たまにここでエラーになります。 そんな複雑なコードではないと思います。 Visible = Falseするのに、大量のメモリを消費するのでしょうか? OSはwin7です。