• 締切済み

フォームが閉じない

vb2010を使用してます。 dim f1 as form dim f2 as form f1.show f2.show とした場合に、f2をf2自身から閉じようとすると、「他のスレッド~」と なりエラーになってしまいます。 こうゆう場合は自身で閉じることは出来ないのでしょうか?

みんなの回答

  • utun01
  • ベストアンサー率40% (110/270)
回答No.1

http://dobon.net/vb/bbs/log3-6/3137.html こんな感じでできないでしょうか? 親フォームから閉じる分には問題ない気がします。 ですので、子フォームから親フォームを操作できれば可能なのでは? とはいえ、テストしてないのでできるかは分かりません。 もしよければお試しください。

itachi020
質問者

お礼

ありがとうございました

itachi020
質問者

補足

返答おそくなりすいません 親フォームから閉じるのは仕様上NGです。 印刷プレビューのフォームなのですが、印刷後に自動でプレビューフォームを 閉じたいのですが上手くいきません。 アクティブレポート.net6.0のプレビュー画面です。

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

関連するQ&A

  • 子フォームから開いたフォームと親子関係を結びたい(VB2003)

    子フォームから開いたフォームと親子関係を結びたい(VB2003) VB.NET2003についての質問です。 formMain のクラスに以下のコードを書いて実行させると、form1がformMainの子フォームとして開きます 下記は、「form1」を「formMain」の子フォームとして開くコードです。 (formMainクラス内のコードです)   ------------------------------   Dim f As New form1   Me.IsMdiContainer=True   f.MdiParent=Me   f.Show   ------------------------------ form1には、form2を開くボタンが用意されています。 質問内容は、このform2を、formMainの子フォームとして開くにはどうすればよいか、ということです。 ためしに、form1クラスに以下のコードを書いて実行させたところ、 「formMainは型であるため、式として利用することができない」というエラーメッセージが出てしまいました。   ------------------------------   Dim f As New form2   f.MdiParent = formMain   f.Show()   ------------------------------ 以上、よろしくお願い致します。

  • フォームを閉じる方法

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

  • フォーム2を出して フォーム1を閉じたい

    のですが、うまくできません。 何が間違っているのでしょうか Dim WithEvents Frm1 As Form1 Dim WithEvents Frm2 As Form2 ------------------- Frm2 = New Form2() Frm2.Show() Frm1 = New Form1() Frm1.Close() ------------------ net です。

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

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

  • VBの各種フォーム表示について

    ご質問です。フォームに関してですが、各種フォーム表示について 疑問があります。 まずFrom2には Dim frm2 As New Form2 frm2.Show() 等で表示する事が可能ですが、 "Explorer1.vb","LoginForm1.vb","AboutBox1.vb","TextFile1.txt" "Dialog1.vb"等の表示はどの様なコードですか? googleで検索しているものの、1ヶ月経ち全然見つかりません。 是非お教え下さい。 (VB2008使用)

  • VB2010でMDI親フォームから子フォームを表示

    VB2010でソフトを作っております。 MDI親フォームから子フォームを表示させたいのですが…。 過去に少しだけVB6を使っていたことがありますが、クラスという概念に苦労しております インスタンスや初期化といったところをうまく扱えばとは思うのですが、よろしくご指導お願いいたします。 1.MDI親フォーム(Form1)のボタンを押し、子フォーム(Form2)を表示させる 2.子フォームが表示されていなかったら表示させる 3.子フォームが表示されていたら何もしない これだけの事ですがずいぶん悩んでおります。 全コードがこれです。 Public Class Form1 Private f2 As New Form2 Private Sub Form1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.IsMdiContainer = True End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim fChild As Form() = Me.MdiChildren For Each f As Form In fChild If f.Text = "Form2" Then Exit Sub End If Next f2 = New Form2 f2.MdiParent = Me f2.Show() f2.Activate() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click If f2 Is Nothing OrElse f2.IsDisposed Then f2 = New Form2 f2.MdiParent = Me End If f2.Show() f2.Activate() End Sub End Class ボタン1でもボタン2でも、期待する動作はするのですが、 ボタン1ではアクティブになっているフォームの名前を力技で取得している気がして… ボタン2では子フォーム(Form2)をすでに表示している状態でもさらにShowをしているのが気に入らなくて… もっとスマートな方法がありましたら、ご指導お願いします。

  • 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を見えなくする方法が違うのでしょうか 初歩的な質問ですいません。

  • 【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」の部分のエラーです。 手書きで申し訳ありませんが、書きたいプログラムの参考画像も載せておきます。 数日前より調べては試し調べては試しと試行錯誤していますが、 正直手詰まりになっており、非常に困っております。 この他にも、フォーム間で命令を出しあいたい場面が多々あるのですが、 プロパティを変える程度のコードでつまずいていて、先に進めません。 手直しした簡単なサンプルコードを書いて頂けると非常に助かります。 以上、何卒よろしくお願い致します。

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

  • vb2010で2つのフォームを同時制御

    vb2010でプロジェクトを作成しています。 Form1がメインで、Form2を観客用に用意しています。 Form1のButton1をクリックすると、Form2のPictureBox1に画像を表示させたく、 下のようなプログラムを書いたのですが、Form2に画像が表示されないばかりか、 「オブジェクト参照がオブジェクトインスタンスに設定されていません。」というエラーまではかれてしまいます。このエラーの意味もわからないほど、素人なのでわかる方どうかよろしくお願いします。 ------------------------------------------------------------------------------ Private Sub Form1_Load Dim g As New Form2 g.Show() ------------------------------------------------------------------------------ Private Sub Button1_Click Form2.PictureBox1.Image = Image.FromFile("C/xxxxxxx.png") Form2.Refresh() ------------------------------------------------------------------------------