• 締切済み

非アクティブの状態で表示されるようにするには

Form1という名前のフォームが表示されていて、そのForm1のクライアント領域をクリックするとForm2という名前のフォームが新しく表示される、というプログラムを作っています。 そのとき、Form2が非アクティブの状態で表示されるようにしたいのです(つまり、Form1がアクティブのまま)。 このようにするにはどうすればいいでしょうか? よろしくお願いいたします。

みんなの回答

  • Kuppycat
  • ベストアンサー率50% (109/216)
回答No.3

Form2を呼ぶとき。 Form2.Show vbModeless, Me Me.Setfocus クリックした時のUnloadは、マウスの動きを監視して、クリックした時処理すると出来るかな? ちょっとそこまでは検証できませんでした。

noname#208339
質問者

お礼

ありがとうございました。 参考にさせて頂きます。

全文を見る
すると、全ての回答が全文表示されます。
  • pochi_won
  • ベストアンサー率38% (15/39)
回答No.2

formでのやりかたは判りませんが、単にポップアップのようにオブジェクトを表示したいのなら、フレームを使うのはどうでしょうか? ↓の場合は、Form1の上にCommand1とFrame1があり、Frame1の上にCommand2があります。 Frame1の上に作ったオブジェクトは、Frame1のvisibleで表示操作できます。 Private Sub Form_Load()  Frame1.Visible = False End Sub Private Sub Command1_Click()  Frame1.Visible = True End Sub Private Sub Command2_Click()  Frame1.Visible = False End Sub

noname#208339
質問者

お礼

ありがとうございました。 参考にさせて頂きます。

全文を見る
すると、全ての回答が全文表示されます。
  • 50100
  • ベストアンサー率28% (99/351)
回答No.1

Form2を表示した後にForm1にフォーカスをセットすればForm1がアクティブになります。 コードで書くと Sub Form1_Click( ) Form2.Show Me.SetFocus End Sub こんな感じです。

noname#208339
質問者

補足

ありがとうございます。 ちょっと説明不足でした。 Form2をポップアップメニューのように表示したかったのです。 Form1がずっとアクティブのままでForm2が最前面に非アクティブで表示されるという感じです。 そして、Form2をクリックするとForm2が消えて、その間Form1がずっとアクティブのままである、というようなことがしたいのですが。またForm2の領域以外の部分をクリックしてもForm2が消えるという、まさにポップアップメニューのようなウインドウを作りたいのですが。 よろしくお願いいたします。

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

関連するQ&A

  • フォームを表示してからメッセージボックスを表示する

    メッセージボックスが表示される前に、フォームを表示させたいです。アクセスです。 ナビゲーションウインドウからフォームをダブルクリックしてフォームを開くのですが、 今のままだとメッセージボックスが表示されてからフォームが表示されてしまいます。 フォームを表示してからメッセージボックスを表示するにはどうすればいいでしょう? Private Sub Form_Open(Cancel As Integer) MsgBox "Form_Open" End Sub だと、先ほど述べたように、メッセージボックスが表示されてからフォームが表示されてしまいます。 フォームを開いたときのイベントは複数あるようで、 Private Sub Form_Activate() MsgBox "Form_Activate" Debug.Print "Form_Activate" End Sub Private Sub Form_Current() MsgBox "Form_Current" Debug.Print "Form_Current" End Sub Private Sub Form_GotFocus() MsgBox "Form_GotFocus" Debug.Print "Form_GotFocus" End Sub Private Sub Form_Open(Cancel As Integer) MsgBox "Form_Open" Debug.Print "Form_Open" End Sub Private Sub Form_Load() MsgBox "Form_Load" Debug.Print "Form_Load" End Sub をすると、 ・Form_Load ・Form_Activate ・Form_GotFocus ・Form_Open ・Form_Current の順に開きますが、やはりフォームが最後に表示されてしまいます。 どうにかして先にフォームを表示させる方法はないでしょうか? ご回答よろしくお願いします。

  • Accessのフォームを閉じるのではなく、非表示にする

    Accessのフォームにおいて、 ボタンをクリックすると、そのフォームが閉じる、 というイベントをつけております。 そのイベントを、フォームが閉じるのではなく、 フォームを非表示にし、メモリ上では開いたまま というイベントに直したいのですが、 Form_F003.Visible = False というような記述をするという 解釈でよろしいのでしょうか?? その解釈でないとしたら、 フォームのソース上で、 フォームを非表示にし、メモリ上では開いたまま というプロパティを設定できるでしょうか?? どなたか、ご指導くださいませ。

  • VB2008 デバッグを実行すると作成したフォームとは違い、Form1が表示されます

    VB2008をはじめたばかりの初心者です。 ファイル入出力のプログラムを書いて、フォームも作成(OpenFileDialogなどを使用)しました。 デバッグを実行すると、フォームでファイル入出力ができるようになる予定なのですが、 「Form1」という何もないフォームがでてきます。 (はじめに手を加えていない、Form1というものがなぜか表示されます。もちろんボタン等もありません) 実際に作成したフォームは、frmWav.vbというプログラムのため、フォームの名前もfrmWav.vb[デザイン]となっています。 デバッグ自体はエラーとはならないため、原因がわかりません。どうかご回答おねがいします!!

  • 終了してもプログラムが実行したまま(VB)

    非常に時間のかかる繰り返し処理を行なうプログラムを作りました。どのくらい、プログラムが進行しているのかわかりやすくするため、 Progress.Show でProgressという名前のフォームを表示し、そこに、プログラムが何%終わったのか表示するようにしました。 プログラムはDo Loop文が使ってあるので、何%終わったのかを表示するためにLoopした回数を取得して、それをフォームに表示することにしましたが、どこかで調べたら機械は、Do Loopのあいだはフォーム上に文字を表示するのに手が回らないからDoEventsを使ってイベントを実行させなさい、といわれました。 そこまではうまくいきました。プログラムを実行すると、プログラムが実行されて何%終わったかもちゃんと表示できるようになりました。 ところが、プログラムの実行中にフォームの右上の×ボタンを押したところ、フォームは画面から消え、プログラムが終了したように見えるのに、VB Editorでは[実行中]となっており、終わってくれません。ずっとDo Loopが実行されたままです。 Private Sub Form_Terminate() のところに Unload Progress と書いても、「Unloadメソッドは使えません」などというエラー・メッセージが出ます。(フォーム上にボタンを置き、そこをクリックするとUnloadするようにしてみましたがやはり同じことを言われました。) 原因は何でしょうか? フォームをUnloadする、ということの意味をちゃんと理解していないのでいけないのだと思うのですが、調べてもよく言っていることがわかりません。 よろしくお願いします。

  • ACCESSのツールバーを非表示にしたい

    ACCESSでフォームを使ったデータベースを作成しようとしています。 限られた表示領域を有効に利用したいのでフォーム表示時にツールバーを非表示にしたいのですがうまくいきません。 起動時に該当フォームを開くようにしていて、Form_Load時に「Application.SetOption \"ツールバーの表示\", False」としているのですが作用してくれません。 一度フォームを閉じてから再表示させるとツールバーが非表示になるのですが…。 起動時にツールバーを非表示にするにはどうしたらよいのでしょうか?

  • C# フォームを閉じてもプログラムが終了しない

    前略 ・C#の初心者です。 ・下記のようなプログラムを作りたいと思っています。プログラムは<作りたいプログラム>の仕様どうりに動作していますが、Form1のFormClosingイベントに Application.Exit()を追加しないと フォーム1で "X"(閉じる)をクリックしても(フォームは非表示になりますが)プログラムが終了しません。プログラムでどこかおかしな部分があると思っています。Application.Exit()を追加しないでもプログラムを終了する方法を教えてください。 <作りたいプログラム> (1)Form1 のbutton1をクリックすると新しいForm2が作成され表示される。Form2が表示されるとForm1は非表示となる。 (2)Form2 のbutton1をクリックするとForm2が非表示となりForm1が表示される。 (3)Form1 の "X"(閉じる)をクリックしてプログラムを終了する。 //Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace formClose { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 form2 = new Form2(); form2.Show(); //フォーム2を表示 this.Hide(); //フォーム1を非表示 } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { Application.Exit(); //アプリケーション終了 } } } //Form2.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace formClose { public partial class Form2 : Form { Form1 form1 = new Form1(); public Form2() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { this.Close(); //フォーム2を閉じる } private void Form2_FormClosing(object sender, FormClosingEventArgs e) { form1.Show(); //フォーム1を表示する } } } 以上

  • .netframeworkで作成したフォーム1のイベントで、フォーム2を表示させたいのですが…

    ものすごく説明しにくいのですが、以下のプログラムを実行すると 「Form2識別子がクラス名でも名前空間名でもありません。」 と、エラーが表示されてしまいます。 クラスが違うからなのでしょうか?何か方法は無いのでしょうか・・・。 何か分かることがあったらよろしくお願いいたしますm(_ _)m private: System::Void Form1_Load(System::Object * sender, System::EventArgs * e) {//フォームロード Form2::Show(); }

  • フォームのアクティブと非アクティブ表示について

    Form1からForm2を表示するという処理を以下のようにコーディングしてみました。 **Form1.frm*** Private Sub Command1_Click() Form1.Hide Form1.vbModal Form1.Show End Sub **Form2.frm*** Private Sub Command1_Click() Unlaod Me End Sub 画面にエクスプローラ等のウィンドウが表示されているときに、Form2を表示させようとすると非アクティブ状態で表示されてしまいます。 また、Form2をUnloadするとForm1が表示されるのですが、その際に、Form1のタイトルと、タスクバーに表示されているボタンが反転した後非アクティブ状態になってしまいます。 フォームは常にアクティブで表示させたいのですが、どうすればよいのでしょうか?

  • VB2010で、2つめのフォームを表示させると、フォームを閉じるまで1

    VB2010で、2つめのフォームを表示させると、フォームを閉じるまで1つめのフォームの操作ができないのですが、どなたか解決方法を御存じないでしょうか。 よろしくお願いします。 Form1のピクチャーボックスに描いた折れ線グラフ上のカーソル(Form11)が、 マウスの動きに合わせてグラフ線上をたどっていくようにしようとしています。 【Form1のボタンを押すと2つめのフォームを呼び出す】 Dim Mark As New Form11 Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click 'グラフカーソル表示 Mark.Show() 【呼び出されたフォームのコード】 Imports System.Drawing Public Class Form11 Private Sub Form2_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint 'フォームのクライアント領域のサイズを設定 Me.ClientSize = New System.Drawing.Size(20, 20) 'カーソルを描く Dim MarkPen As New Pen(Color.Red, 1) Dim g As Graphics = e.Graphics g.DrawEllipse(MarkPen, 0, 0, 20, 20) '円の描画 Me.TopMost = True '最全面 Me.TransparencyKey = Me.BackColor '透明色の設定 Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None '枠なし End Sub End Class

  • VB DataRepeaterにて条件で表示

    環境:Visual Stadio 2008 XP データはAccessのmdb DataRepeaterに関しての本やサイトが少ないので誰かおしえて下さい。 DataRepeater(Form2)にてテーブルのデータを表示しています。さらにボタンを追加してクリックするとその行のデータについて表示し追加でその行のデータを追加できるようにしています(Form3)。 しかし追加して戻った際、DataRepeaterは変更前の状態で表示されています。ここにフィルターをかけたいのですがこのフォーム(Form2)が開く都度、フィルターがかかった状態で表示したいのですが、コーディング方法を教えて下さい。 【例えば】 テーブルdd a b c 1 あ 2 い ※aは自動でNoを振っている <<Form2>> (form3呼出ボタン)a 1 c (form3呼出ボタン)a 2 c ※cは空白です(まだ何も登録してないから) <<Form3>>  a 1 c か(←ここを入力)  (登録ボタン) ※「(登録ボタン)」にてcの「か」を登録してform2に 戻るのですが、以前、上のform2の状態のままです。 結果としては <<Form2>> (form3呼出ボタン)a 2 c のみ表示して欲しいです。フィルターはcかnullかどうか もしくは0かどうか? というコーディング方法をおしえて下さい。