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

解決


W  2009-01-10 19:39:36  No: 141257  IP: 192.*.*.*

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

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

編集 削除
W  2009-01-10 20:01:13  No: 141258  IP: 192.*.*.*

すみません。
訂正します

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

ではなく

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

でした。

編集 削除
Cool  2009-01-10 20:11:35  No: 141259  IP: 192.*.*.*

何この間違い探しw

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

編集 削除
W  2009-01-10 20:18:38  No: 141260  IP: 192.*.*.*

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

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

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

↑こんな感じです。

編集 削除
花ちゃん  2009-01-11 07:55:14  No: 141261  IP: 192.*.*.*

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

編集 削除
W  2009-01-11 11:06:07  No: 141262  IP: 192.*.*.*

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

編集 削除
太郎冠者  2009-01-11 11:53:58  No: 141263  IP: 192.*.*.*

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

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

編集 削除
太郎冠者  2009-01-11 11:53:59  No: 141264  IP: 192.*.*.*

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

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

編集 削除
W  2009-01-11 14:13:32  No: 141265  IP: 192.*.*.*

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

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

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

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

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

編集 削除
太郎冠者  2009-01-11 14:39:21  No: 141266  IP: 192.*.*.*

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

編集 削除
W  2009-01-11 23:16:37  No: 141267  IP: 192.*.*.*

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

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

編集 削除
W  2009-01-11 23:17:37  No: 141268  IP: 192.*.*.*

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

編集 削除