C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: 画面の消去について


(過去ログ 26 を表示中)

[トピック内 14 記事 (1 - 14 表示)]  << 0 >>

■12339 / inTopicNo.1)  画面の消去について
  
□投稿者/ マルコ (6回)-(2008/01/08(Tue) 11:11:13)

分類:[VB.NET/VB2005] 

分類:[VB.NET/VB2005] 

開発言語:Microsoft2003 .net2003 ver 7.1.3091
:Microsoft.NET Framework1.1 ver 1.1.4322

たびたびすみません。
ログイン画面開く⇒ログイン画面(okボタン)⇒入力画面開く(登録画面)
入力画面の中に参照ボタンと削除ボタンがあります。
参照ボタンは、(照会画面)複数開くことが可能。
削除ボタンは、複数開いた子画面を削除する。

質問1)入力画面を開いた直後にログイン画面を閉じたいのですが
    うまくいきません。ログインの中でokボタンのイベントで
入力画面.show
me.close
としたら入力画面も削除されてしまいました。
    何か方法がありましたら教えてください。
    
質問2)入力画面の削除ボタンイベントで、開かれている子フォームすべてを
    削除したいのですが何か方法はありますか?
    参照ボタンのイベントで
子フォーム.owner=me
    子フォーム.show
    と定義し、
    削除ボタンのイベントで
    for Each hform as form In me.OwnedForms
hform.close
next
としていたのですがこの方法で問題ないでしょうか?
以上2件の質問なのですが、よろしくお願いします。
    












引用返信 編集キー/
■12341 / inTopicNo.2)  Re[1]: 画面の消去について
□投稿者/ マルコ (7回)-(2008/01/08(Tue) 11:38:23)
参照ボタンのイベントで
子フォームに対してOwnerプロパティを使っていたために
入力画面が子フォームの最前面に表示されていなかったようです。
Ownerプロパティは、子フォーム(照会画面)をすべて削除するために
使用していました。
Ownerプロパティを使わずにフォームを簡単に削除する方法はありますか
何度もすいませんが、何か方法があったら教えてください。


引用返信 編集キー/
■12344 / inTopicNo.3)  Re[2]: 画面の消去について
□投稿者/ かずくん (1回)-(2008/01/08(Tue) 12:29:50)
生成された子フォームを管理するため、System.Collections.Generic.List<Form>のインスタンスを用意しておく。

子フォーム作成するたびに、List<Form>のインスタンスにフォームを追加(登録)する。
まとめて削除するときは、List<Form>のインスタンスの内容をループで回して、各子フォームを閉じる。
以上

引用返信 編集キー/
■12345 / inTopicNo.4)  Re[3]: 画面の消去について
□投稿者/ マルコ (8回)-(2008/01/08(Tue) 12:54:09)
No12344 (かずくん さん) に返信
> 生成された子フォームを管理するため、System.Collections.Generic.List<Form>のインスタンスを用意しておく。
>
> 子フォーム作成するたびに、List<Form>のインスタンスにフォームを追加(登録)する。
> まとめて削除するときは、List<Form>のインスタンスの内容をループで回して、各子フォームを閉じる。
> 以上
>
System.Collections.Generic.Listの定義ができません。
System.Collectionsまでは用意できているようなのですが
Generic.Listがありません。
Microsoft.NET Framework1.1 ver 1.1.4322が関係しているのでしょうか??
初回の質問1についても宜しくお願いします。



引用返信 編集キー/
■12346 / inTopicNo.5)  Re[2]: 画面の消去について
□投稿者/ やじゅ (12回)-(2008/01/08(Tue) 12:57:33)
No12341 (マルコ さん) に返信
>質問1)入力画面を開いた直後にログイン画面を閉じたいのですが
>    うまくいきません。ログインの中でokボタンのイベントで
>入力画面.show
>me.close
>としたら入力画面も削除されてしまいました。
>    何か方法がありましたら教えてください。
    
me.hide として表示にすればいいんでないかい。

> Ownerプロパティを使わずにフォームを簡単に削除する方法はありますか
> 何度もすいませんが、何か方法があったら教えてください。
>

Tagプロパティあたりでもキーとなる文字列でも入れて代用すればいいでないかい。
引用返信 編集キー/
■12351 / inTopicNo.6)  Re[4]: 画面の消去について
□投稿者/ マルコ (9回)-(2008/01/08(Tue) 14:21:54)
やじゅさんへ
.Tagプロパティを使って・・」と回答されいたのですが
簡単なサンプルあるでしょうか?

参照ボタンのイベントで
dim 子フォーム as new Form2
子フォーム.tag="子画面"
子フォーム.show
という記述をするのでしょうか?

引用返信 編集キー/
■12353 / inTopicNo.7)  Re[2]: 画面の消去について
□投稿者/ いしだ (72回)-(2008/01/08(Tue) 14:32:33)
2008/01/08(Tue) 14:35:19 編集(投稿者)

こんにちは。

質問1)
入力画面を親フォーム(メインフォーム)とし、ログイン画面や参照画面を
子フォームとしてはどうでしょう。
最初は入力画面を非表示にしておき、ログイン画面を表示し、ログインOKな
らログイン画面をcloseし、入力画面のVisibleをtrueにする、といった感じ
でしょうか。
(もっと良い方法あるのかな。。。?)

質問2)
Ownerプロパティを使用する方法で良いんじゃないでしょうか。
ちなみにGenericはC#2.0からですね。

(編集)失礼、VBでしたね。VBでもframework1.1ではGenericは使えませんね。
引用返信 編集キー/
■12354 / inTopicNo.8)  Re[5]: 画面の消去について
□投稿者/ マルコ (10回)-(2008/01/08(Tue) 15:18:08)
いしださんへ
回答ありがとうございます。
>質問1)
>入力画面を親フォーム(メインフォーム)とし、ログイン画面や参照画面を
>子フォームとしてはどうでしょう。
>最初は入力画面を非表示にしておき、ログイン画面を表示し、ログインOKな
>らログイン画面をcloseし、入力画面のVisibleをtrueにする、といった感じ
>でしょうか。
>(もっと良い方法あるのかな。。。?)

ログインを子フォームにするには、どうすればいいのでしょうか?
たしかにログイン画面のokボタンイベントでvisible=falseにすると
消えますが、メモリ上に残ることはないでしょうか?

>質問2)
>Ownerプロパティを使用する方法で良いんじゃないでしょうか。
Ownerプロパティを使用すると、入力画面が子フォーム(照会画面)の最前面に表示されなく
なります。なにか方法はありますか?






引用返信 編集キー/
■12356 / inTopicNo.9)  Re[1]: 画面の消去について
□投稿者/ まどか (430回)-(2008/01/08(Tue) 15:32:13)
> ログイン画面開く⇒ログイン画面(okボタン)⇒入力画面開く(登録画面)
>
> 質問1)入力画面を開いた直後にログイン画面を閉じたいのですが
>     うまくいきません。ログインの中でokボタンのイベントで
> 入力画面.show
> me.close
> としたら入力画面も削除されてしまいました。
>     何か方法がありましたら教えてください。

ログインのOKで入力を開くのではなく
ログインを開く人が

結果=ログインの結果
If 結果=OK Then
  入力表示
End If

がよいかも。

#というかこの場合もOwnerのせいで閉じられてしまうんじゃないの?
#だったらOwnerの意味と挙動を理解したうえで、必要な場面のみで使うようにしたほうがよいですよ。

>     削除ボタンのイベントで
>     for Each hform as form In me.OwnedForms
> hform.close
> next
> としていたのですがこの方法で問題ないでしょうか?

上記にも関係しますが、列挙対象が「参照ボタンで開いたフォームのみ」であることを判断するか保証してあげる仕様が必要でしょう。

> 参照ボタンのイベントで
> dim 子フォーム as new Form2
> 子フォーム.tag="子画面"
> 子フォーム.show
> という記述をするのでしょうか?

Tagプロパティは識別するための手段の一つとしてやじゅさんが例示されたもので、閉じる方法ではありません。
つまり、「開いているフォームの一覧があれば、Tagに識別子を入れておけば探せるよ」ということです。
今回の場合、参照ボタンで開かれたもの限定であれば、上記の「子フォーム」をArrayListなりに保存しておけばよいのではないでしょうか。
引用返信 編集キー/
■12358 / inTopicNo.10)  Re[6]: 画面の消去について
□投稿者/ まどか (431回)-(2008/01/08(Tue) 15:42:08)
> ログインを子フォームにするには、どうすればいいのでしょうか?
> たしかにログイン画面のokボタンイベントでvisible=falseにすると
> 消えますが、メモリ上に残ることはないでしょうか?

だったら、

Me.Hide ※Meはログイン
入力.ShowDialog()
Me.Show

じゃだめなんですか?

なぜ、Ownerにこだわるんでしょうか?
「子フォーム」という言葉はどういう意味(仕様)で使われていますか?

> Ownerプロパティを使用すると、入力画面が子フォーム(照会画面)の最前面に表示されなく
> なります。なにか方法はありますか?

あれ?
「入力画面が子フォーム(照会画面)の最前面」って入力のほうが手前ですよね?
「入力画面の上に照会画面」ではないの?
引用返信 編集キー/
■12359 / inTopicNo.11)  Re[2]: 画面の消去について
□投稿者/ いしだ (73回)-(2008/01/08(Tue) 15:44:26)
> ログインのOKで入力を開くのではなく
> ログインを開く人が

なるほど、これの方が断然良いですね。
入力表示のところで、Application.Runを実行する感じでしょうかね。

引用返信 編集キー/
■12360 / inTopicNo.12)  Re[4]: 画面の消去について
□投稿者/ かずくん (2回)-(2008/01/08(Tue) 16:10:27)
No12345 (マルコ さん) に返信
> ■No12344 (かずくん さん) に返信
>>生成された子フォームを管理するため、System.Collections.Generic.List<Form>のインスタンスを用意しておく。
>>
>>子フォーム作成するたびに、List<Form>のインスタンスにフォームを追加(登録)する。
>>まとめて削除するときは、List<Form>のインスタンスの内容をループで回して、各子フォームを閉じる。
>>以上
>>
> System.Collections.Generic.Listの定義ができません。
> System.Collectionsまでは用意できているようなのですが
> Generic.Listがありません。
> Microsoft.NET Framework1.1 ver 1.1.4322が関係しているのでしょうか??
> 初回の質問1についても宜しくお願いします。
>
ごめん、Visual Studio 2003だったのね。よく見てなかったわ。
×System.Collections.Generic.List
〇System.Collections.ArrayListに読み替えてください。

取り出すとき型キャストが必要になるけど、
目的は、子フォームをまとめて閉じることなので、For Eachで回せば無問題(たぶん...)

引用返信 編集キー/
■12361 / inTopicNo.13)  Re[7]: 画面の消去について
□投稿者/ マルコ (11回)-(2008/01/08(Tue) 16:16:31)
まどかさんありがとうございます。

Ownerにはこだわっていません。
一度に複数のフォーム(照会画面)を削除する方法として
試していました。

今回の画面仕様は、ログイン画面からokボタンで入力画面が開きます。
入力画面で参照ボタンを押すと照会画面が開きます。
複数開かれている照会画面と入力画面(1画面のみ)を画面をクリックすることで
切り替える仕様になっています。(入力画面で入力する場合は、最前面に表示し、
照会画面を確認するときは、照会画面を最前面に表示する。)

tagプロパティを使って試してみます。






引用返信 編集キー/
■12378 / inTopicNo.14)  Re[5]: 画面の消去について
□投稿者/ マルコ (12回)-(2008/01/08(Tue) 20:12:47)
>質問1)入力画面を開いた直後にログイン画面を閉じたいのですが
>    うまくいきません。ログインの中でokボタンのイベントで
>入力画面.show
>me.close
>としたら入力画面も削除されてしまいました。
>    何か方法がありましたら教えてください。
>    
質問1については、まどかさんのアドバイスでうまくいきました。

ありがとうございます。



>質問2)入力画面の削除ボタンイベントで、開かれている子フォームすべてを
>    削除したいのですが何か方法はありますか?
>    参照ボタンのイベントで
>子フォーム.owner=me
>    子フォーム.show
>    と定義し、
>    削除ボタンのイベントで
>    for Each hform as form In me.OwnedForms
>hform.close
>next
>としていたのですがこの方法で問題ないでしょうか?

質問2については、かずさんの案で試してみます。

ありがとうございました。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -