- PR -

子フォームを配列化後、親フォームをアクティブ

1
投稿者投稿内容
さく
ベテラン
会議室デビュー日: 2004/06/11
投稿数: 74
投稿日時: 2005-11-22 22:34
お世話になっております。

件名の件で、
this.OwnedFormsやthis.AddOwnedForm(form名)で
親フォームから発生する子フォームを配列化し
フォームを画面に表示したのですが、親フォームをアクティブにできず
悩んでいます。

例)
親フォームに検索する情報のボタンが2つあります。
それぞれのボタンをクリックすると、それぞれの
検索結果の(子)画面が2枚表示されます。
(検索結果の画面は、一枚で2つの情報を表示できます。)

(子)画面1枚を表示後、もう一つの(子)画面を
表示しようと親フォームをアクティブにしようとするのですが
アクティブにできません。(子)画面を最小化して
親フォームのボタンをクリックできる状態で、使い勝手が
悪く悩んでおります。

親フォームをアクティブにする方法があるでしょうか?
宜しくお願いします。

(追伸)
渋木宏明(ひどり)さん
スマートクライアントとログファイルの件、返信ありがとうございました。
トピックが後ろの方にあり、今さら上げることに抵抗感じましたので、
大変失礼ですが、この場でお礼を述べさせて下さい。

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-11-22 22:55
引用:

さくさんの書き込み (2005-11-22 22:34) より:

this.OwnedFormsやthis.AddOwnedForm(form名)で
親フォームから発生する子フォームを配列化し
フォームを画面に表示したのですが、親フォームをアクティブにできず
悩んでいます。


(子)画面1枚を表示後、もう一つの(子)画面を
表示しようと親フォームをアクティブにしようとするのですが
アクティブにできません。(子)画面を最小化して
親フォームのボタンをクリックできる状態で、使い勝手が
悪く悩んでおります。

親フォームをアクティブにする方法があるでしょうか?


すみません、イメージできません。

 子画面が表示された状態で、親画面の操作はできるんですね?「最小化」とは、「閉じる」ではないですよね?子画面の方が親画面より大きいから、子画面で親画面が隠れてしまう、っていうことですか?

 で、子画面を表示するのに、どのメソッドを使っているのでしょうか。
___________________________________________________________________
□ written by Jitta on 2005/11/22
□ Microsoft MVP :Visual Developer ASP/ASP.NET Oct.2005-Sept.2006
_________________
さく
ベテラン
会議室デビュー日: 2004/06/11
投稿数: 74
投稿日時: 2005-11-22 23:20

早速の返信ありがとうございます。

説明が雑でした。。。
ソースコードが手元にないので、記憶ですが、改めて
(会社からだと閲覧は可能ですが、書き込みができないのです(><))

親フォーム AForm.cs
子フォーム BForm.cs

親フォームに、ボタンが2つあり、それぞれA情報とB情報を
検索し、BFormに表示します。

AFormから、 BForm bFrm = new BForm() ;
bFrm.Show() ;
       this.AddOwnedForm(bFrm) ; // フォームの配列化
で表示します。Bフォームは、A情報もB情報も表示できるレイアウトです。

(フォームの配列化は、親フォームを閉じる時に、子フォームを一括で閉じるためです。)

A情報の子フォームを表示した時に、B情報も表示して比較したい時があります。
この時に、親フォームをマウスや、Alt+Tabなどで、画面を最前面(?)に出して、A情報の子フォームを後ろに回して、B情報のボタンをクリックしてB情報を表示したいのです。
マウスやAlt+Tabをやっても、A情報の子フォームは最前面のままで
親フォームが前に出てきません。

ここで、A情報の子フォームの最小化ボタンで、タスクに入れて(?)
親フォームを最前面に出している状態です。子画面を最小化しないと
親フォームが最前面に出てこない事で使い勝手が悪いなと感じてます。

これで、伝わるでしょうか?・・・・
(最小化ボタンはおいておいて、親フォームが子フォームの前に出てこない事で悩んでいます。)

宜しくお願いします。


じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-11-23 01:12
引用:

さくさんの書き込み (2005-11-22 23:20) より:

this.AddOwnedForm(bFrm) ; // フォームの配列化


認識に誤りがあるように思えます。
フォームの配列化ではなく、所有するフォームを追加しています。

引用:

(フォームの配列化は、親フォームを閉じる時に、子フォームを一括で閉じるためです。)


オーナーの使い方が誤っていないでしょうか?
管理するのであれば、別の方法で管理してください。

引用:

この時に、親フォームをマウスや、Alt+Tabなどで、画面を最前面(?)に出して、A情報の子フォームを後ろに回して、B情報のボタンをクリックしてB情報を表示したいのです。
マウスやAlt+Tabをやっても、A情報の子フォームは最前面のままで
親フォームが前に出てきません。


それは、オーナーフォームの仕様ですよね。
そうなるようにコードが組んであるのでその通りに動いています。
オーナーフォームを使うのをやめてしまえば解決します。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
trapemiya
大ベテラン
会議室デビュー日: 2005/07/30
投稿数: 102
投稿日時: 2005-11-23 18:14
子フォームを管理するクラスを作成し、子フォーム追加メソッド、子フォームを全て閉じるメソッドなどを実装すれば良いんじゃないでしょうか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-11-23 19:13
ほい → http://quick-tips.hp.infoseek.co.jp/vs.net/sample/index.html
さく
ベテラン
会議室デビュー日: 2004/06/11
投稿数: 74
投稿日時: 2005-11-23 19:31

お世話になっております。

じゃんぬねっとさん、Jitta さん、trapemiyaさん
返信ありがとうございます。

子フォームを配列として管理するように変更して、問題解決しました。
AddOwnedFormなどが使えるか使えないかで悩んでいたので、
見切りができて助かりました。

サンプルソースは参考にさせて頂きます。

多謝。
1

スキルアップ/キャリアアップ(JOB@IT)