• ベストアンサー

VB2010 Formを裏で動かす方法

VB2010を使っています。Form1、Form2、Form3を作成して、Form1をHide()ではなく、裏で動かす方法を教えてください。

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

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

こんにちは 少し質問の意味が掴めませんでしたので、情報を頂けないでしょうか? >裏で動かす方法を 「Hide()ではなく」ということは、裏といっても目に見える状態で「裏で動かす」ということでしょうか? 下記の動作とは違うんですよね。 Public Class Form1 Dim f2 As New Form2 Dim st1 As String = "JR" Dim st2 As String = "山田" Private Sub f1() Handles MyBase.Shown TextBox1.Text = st1 TextBox2.Text = st2 End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click st1 = TextBox1.Text st2 = TextBox2.Text f2.txt2(st1, st2) f2.Show() Me.WindowState = FormWindowState.Minimized End Sub End Class Public Class Form2 Public _txt1 As String Public _txt2 As String Dim st1 As String = "東日本の" Dim st2 As String = "佐藤" Dim f3 As New Form3 Private Sub f2() Handles MyBase.Shown TextBox1.Text = _txt1 & "," & st1 TextBox2.Text = _txt2 & "," & st2 End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click f3.txt3(_txt1 & "," & st1, _txt2 & "," & st2) f3.Show() End Sub Public Sub txt2(ByVal txt1 As String, ByVal txt2 As String) _txt1 = txt1 _txt2 = txt2 End Sub End Class Public Class Form3 Public _st1 As String Public _st2 As String Private Sub f3() Handles MyBase.Shown TextBox1.Text = _st1 & "従業員は" TextBox2.Text = _st2 & "," & "鈴木です。" End Sub Public Sub txt3(ByVal st1 As String, ByVal st2 As String) _st1 = st1 _st2 = st2 End Sub End Class となると、Background Workerのことでしょうか? Background Workerについては下記URLを見てください。 http://www.atmarkit.co.jp/fdotnet/vb2005/vb2005_04/vb2005_04_01.html あとは、NotifyIconでしょうか? Public Class Form1 Private Sub f1() Handles MyBase.Shown Me.WindowState = FormWindowState.Minimized Button1.Text = "画面を非表示にします。" Button2.Text = "Form2を開きます。" End Sub Private Sub NotifyIcon1_Click(sender As System.Object, e As System.EventArgs) Handles NotifyIcon1.Click Me.WindowState = FormWindowState.Normal End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Me.WindowState = FormWindowState.Minimized End Sub Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click Dim f2 As New Form2 f2.Show() End Sub End Class Public Class Form2 Private Sub f2() Handles MyBase.Shown Label1.Text = "Form2が開きました。" End Sub End Class お手数ですが、出来る範囲で結構ですので情報を返信して頂けると嬉しいです。

totti1800
質問者

お礼

早々にご回答をありがとうございました。丁寧にコードもお書きいただきましたので、2つとも作成してみました。 NotifyIconを利用するのが、私には良いことがわかりました。ありがとうございました。 但し、「Private Sub f1() Handles MyBase.Shown Me.WindowState = FormWindowState.Minimized」 のところで、「FormWindowState.Minimized」を「FormWindowState.Normal」に書き換えて使いました。 感謝いたします。

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

関連するQ&A

  • VB.NET Form1からForm2を開いたり閉じたりする方法

    VB.NET2005でForm1にあるCheckBoxをTrueにするとform2をモードレスフォームとして開き、CheckBoxをFalseにするとform2を閉じる方法がわかりません。また、form2の[×]で閉じた時にはForm1にあるCheckBoxをFalseにする方法がわかりません。 '----------------------------------- Private Sub CheckBox2_CheckedChanged ・・・   Dim f_cnt As Integer   Dim form2 As New Form2()   f_cnt = My.Application.OpenForms.Count   If CheckBox1.Checked = True Then     If f_cnt = 1 Then form1.Show() 'モードレスフォームとして表示する   Else    form2.Close() ←閉じない   End If End Sub '-----------------------------------

  • VB6で、Form1をコピーする方法を教えて下さい。

     VB6で、Form1をコピーする方法を教えて下さい。できれば、起動しているワードに貼り付ける方法も教えて下さい。

  • VB Formの非表示について

    質問が以下の通りです。 1 VBでForm1(親Form),Form2(子Form)を作成 2 Form1(親Form)を隠れた状態で、まず認証用のForm2(子Form)を呼出 3 Form2での認証入力が通ったら、Form2を閉じて、Form1を表示させる   逆にFormを閉じる ということがしたいです。 いつも、素人のような質問にすみませんでした。 宜しくお願いします。

  • Form2の変数をForm1にも

    あるプロジェクト内で「Form2.vb」を作成して、そこで変数(例えば X=1)を作り それを「Form1.vb」や、「Form3.vb」などで共有するにはどうすればいいでしょうか。 ご回答よろしくお願いします。

  • (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と同様のことが起きるようです。 もし、これらの現象全体についてしっかりと説明できる方がいらっしゃれば、 説明もしていただけるとうれしいです。

  • 【VB2008】2つのFormの上下を切り替える方法。。。

    【VB2008】2つのFormの上下を切り替える方法。。。  今晩は,いつも勉強させていただいております. 質問させていただきます.どうぞよろしくお願いいたします.  2つの重なったFormを切り替えるときに今までは Form1.Visible = False Form2.Visible = True などといたしておりましたが、その度に膨大な量の .Paintイベントが走っていることに気づきましたゆえ、 常に重ねておいて上下を切り変えればよいかな?と考えました。  そこで、 Form2.Activate や Form2.Owner = Form1 などといたしましたが変化がございません。。 検索いたしましてもなかなか出てこないのですが、 他に何か方法はございますでしょうか??  もしお詳しい方がいらっしゃいましたら,是非ともアドバイス いただきたく、どうぞよろしくお願いいたします。

  • form2 から form1に戻ったとき、form1のTextboxの内容を消したくないのですが

    .NETのBasicでform1からform2に移行するため Dim F2 As New Form2() Me.Hide() F2.Show() この後、form1にもどるため Dim F1 As New Form1() F1.Show() Me.Hide() 上記のように書くと、form1のTextboxの内容が消えてしまいますよね。 これを消さずにまたform1のTextboxの編集が続けられるようにしたいのですが、どうすればいいでしょうか ただ単にform1を見えなくする方法が違うのでしょうか 初歩的な質問ですいません。

  • (VB2008EEです)Form1からForm2をモーダレスで表示(S

    (VB2008EEです)Form1からForm2をモーダレスで表示(Show(Me))したのち、 Form2を、(Form2の)閉じるボタン(右上にあるXボタン)で閉じるときに、 単にHideするだけの処理に変更することは可能でしょうか。 デフォルトでは、閉じるボタンですと、Close()と同様、 Close(&Dispose)となると思いますが、Hide()処理に 変えられるかということです。 。。。 試しに、FormClosingイベントハンドラでHide()→e.cancel=Trueって やってみたところ、(再度同じForm2のインスタンスを使ってShowができ、 さらに前回のText表示などが残っているなど)その場はうまく行ったように 見えたのですが、そうすると、アプリ(Form1)が閉じるボタンで終了しなくなって しまいました。 (Application.Exitでもダメ、Endでは(強制終了とのことなので)OKですが) Form2のClose処理をCancelしているからだ、とは思いますが。 ShowDialog→Xボタン(同じ記述のまま) の後では、終了可能です。 では、Show→Xボタンのあとで、同じインスタンスで、上記と同じように、 ShowDialog→Xボタンとしたあと、Form1のXボタンでアプリを 終了させようとするとどうなるか。 結果は、終了不能でした。 一度Show→Xしたらそれをどこかに覚えている?ってことなのでしょうか。。。 ここらへんの現象まで、合わせて説明できる方がいらっしゃったら 合わせてご説明いただけませんでしょうか。 。。。 なお、なぜこんなことするの?という実際論はここではなしで 純粋に技術論でお願いいたします。

  • Form1.vbに書いた定数をModule1.vbでも使うには?

    Form1.vbには Public Class Form1Form Public Const 横幅 As Long = 1200 と書いています。 そして、 Module1.vbに Sub 共通_横幅() Form1Form.Width = 横幅 End Sub と書くと、 「名前 '横幅' は宣言されていません。」 となります。 Form1.vbの Public Class Form1Formの上に 「Public Const 横幅 As Long = 1200」 を移動しても 「名前空間のステートメントが無効です。」 となります。 どうすれば Form1.vbで宣言した定数をModule1.vbで使用することができるのでしょうか? スコープを「Public」にしただけではだめなのでしょうか? Class Form1Form.Width = 横幅 にしてもだめでした。 よろしくお願い致します。

  • formの移植

    あるパソコンで作成したフォームを(form1)1つだけ別のパソコンに移植したいのですが、移植したいパソコンでform1を作成してプロジェクトの中に、(form1.vb,Form1.Designer.vb,Form0.resx)を上書きすれば良いのでしょうか?

このQ&Aのポイント
  • プリンターDCP-J962Nの印刷を中止する方法を教えてください。
  • Windows10を使用しているパソコンからUSBケーブルで接続されたプリンターDCP-J962Nの印刷を途中で中止したいです。
  • プリンターDCP-J962Nの印刷を中止する手順をお教えください。
回答を見る