表示されているFormを取得するには

解決


W  2009-01-11 04:39:36  No: 141257

はじめまして。Wと申します。
環境は VisualStudio2008 Pro VisualBasicです。

早速質問なのですが、
ウィンドウの×とプログラムの終了ボタンを押したとき、"Form1-2"というFormが表示されているかを調べ、表示されている場合は警告メッセージを表示する
というプログラムを作成したいのですがその場合どのようにすればなるのでしょうか。
どなたかご存知の方、回答をお願いします。
解説サイトなど直接教えてくれるとありがたいです。


W  2009-01-11 05:01:13  No: 141258

すみません。
訂正します

ウィンドウの×とプログラムの終了ボタンを押したとき、"Form1-2"というFormが表示されているかを調べ、表示されている場合は警告メッセージを表示する

ではなく

ウィンドウの×とプログラムの終了ボタンを押したとき、"Form1_2"というFormが表示されているかを調べ、表示されている場合は警告メッセージを表示する

でした。


Cool  2009-01-11 05:11:35  No: 141259

何この間違い探しw

"Form1_2"ってのは閉じられるウィンドウが開いたForm?
それとも別プロセスで開いてるForm?


W  2009-01-11 05:18:38  No: 141260

お早い返事ありがとうございます。
少し訂正として出した範囲が大きすぎました。
以降気をつけます...

>"Form1_2"ってのは閉じられるウィンドウが開いたForm?
>それとも別プロセスで開いてるForm?
同じプロセスです。

aa.exe
  |-Form1
  |-Form1_2
(続く...)

↑こんな感じです。


花ちゃん  2009-01-11 16:55:14  No: 141261

VB2005 以降なら、My.Application.OpenForms プロパティ を調べて見て下さい。


W  2009-01-11 20:06:07  No: 141262

My.Application.OpenForms
を調べてみたのですが以下のことしかわかりませんでした。
http://msdn.microsoft.com/ja-jp/library/eh13dca9(VS.80).aspx
あと、My.Application.OpenFormsでは右上の×ボタンを押したときは感知しないのではないでしょうか?  ちょっと理解できなかったので...


太郎冠者  2009-01-11 20:53:58  No: 141263

>My.Application.OpenFormsでは右上の×ボタンを押したときは感知しない
プロパティとイベントをごちゃ混ぜにしてませんか?

My.Application.OpenFormsプロパティはMSDNにあるように
アプリケーションの現在開かれているすべてのフォームのコレクションを取得するものです。
なので、FormClosingイベントなどで、ウィンドウが閉じられるのを感知して
その中でMy.Application.OpenForms内に"Form1_2"という名前のFormがあるかどうかを判定して下さい。


太郎冠者  2009-01-11 20:53:59  No: 141264

>My.Application.OpenFormsでは右上の×ボタンを押したときは感知しない
プロパティとイベントをごちゃ混ぜにしてませんか?

My.Application.OpenFormsプロパティはMSDNにあるように
アプリケーションの現在開かれているすべてのフォームのコレクションを取得するものです。
なので、FormClosingイベントなどで、ウィンドウが閉じられるのを感知して
その中でMy.Application.OpenForms内に"Form1_2"という名前のFormがあるかどうかを判定して下さい。


W  2009-01-11 23:13:32  No: 141265

回答、ありがとうございます。
>プロパティとイベントをごちゃ混ぜにしてませんか?
たぶん...。ごちゃまぜでした。理解不足です。すみませんでした。

>FormClosingイベントなどで、ウィンドウが閉じられるのを感知して
>その中でMy.Application.OpenForms内に"Form1_2"という名前のFormがあるかどうかを判定して下さい。

というのですがFormClosinについては検索したらサンプルコードがあったので参考にしたのですが

>My.Application.OpenForms内に"Form1_2"という名前のFormがあるかどうかを判定して下さい。

がインターネット上で調べてもよく理解できません...。
サンプルコードなどを教えていただけませんか?
わがままですみません...。


太郎冠者  2009-01-11 23:39:21  No: 141266

For Each 〜 Nextでぐるぐる回してFormのNameプロパティを確認するだけですよ。


W  2009-01-12 08:16:37  No: 141267

何度も回答していただいて申し訳ないです...
結局、調べてわかったのが
「初心者には無理」
ということがわかりました。
System.Windows.Forms.FormClosingEventArgs) 
を使って我慢します。

また何かあったらお願いします。


W  2009-01-12 08:17:37  No: 141268

解決のチェックを入れ忘れました...


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加