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

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

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

Re[6]: 全画面アプリの画面遷移で他アプリにフォーカス移動してしまう


(過去ログ 70 を表示中)

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

■40721 / inTopicNo.1)  全画面アプリの画面遷移で他アプリにフォーカス移動してしまう
  
□投稿者/ ZAP (8回)-(2009/09/01(Tue) 23:41:04)

分類:[.NET 全般] 

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

現在、全画面Windowで複数画面遷移を行うWindowアプリケーションを作成しているのですが、
たまに他アプリケーションがアクティブになってしまいます。
根本的なところで「お約束」が分かっていない可能性があると思い、ご教示いただければと思いました。

全画面表示方法
・デザイナにて下記項目を設定
 ・Windowsstate:Maximized
 ・FormBorderStyle:None

フォーム遷移方法
frmTest f = new frmTest();
f.Show();
this.Dispose();

根本的な方法が間違っている可能性も高くお恥ずかしいのですがどうぞよろしくお願いいたします。
引用返信 編集キー/
■40732 / inTopicNo.2)  Re[1]: 全画面アプリの画面遷移で他アプリにフォーカス移動してしまう
□投稿者/ 渋木宏明(ひどり) (1198回)-(2009/09/02(Wed) 00:14:47)
渋木宏明(ひどり) さんの Web サイト
> 根本的な方法が間違っている可能性も高くお恥ずかしいのですがどうぞよろしくお願いいたします。

表示しているウィンドウを閉じて、新たにウィンドウを開くからです。

引用返信 編集キー/
■40734 / inTopicNo.3)  Re[1]: 全画面アプリの画面遷移で他アプリにフォーカス移動してしまう
□投稿者/ やじゅ (1300回)-(2009/09/02(Wed) 00:19:09)
やじゅ さんの Web サイト
No40721 (ZAP さん) に返信
> this.Dispose();

起動した画面を閉じちゃうんですか
http://bbs.wankuma.com/index.cgi?mode=al2&namber=183&KLOG=1
引用返信 編集キー/
■40747 / inTopicNo.4)  Re[2]: 全画面アプリの画面遷移で他アプリにフォーカス移動してしまう
□投稿者/ ZAP (11回)-(2009/09/02(Wed) 08:44:21)
ひどりさん、やじゅさんご意見ありがとうございます。

ひどりさん
> 表示しているウィンドウを閉じて、新たにウィンドウを開くからです。
なるほど・・・新しい画面を表示する事によって新しい画面が前面に表示されたあとに裏側の古い画面が
Disposeされるという動作を(勝手に)想像していたので問題はないと考えていました。
取り急ぎご返事のみ(動作検証を急いでするまでは問題CLOSEできませんが・・・)で申し訳ないですが
ありがとうございました。

やじゅさん
>起動した画面を閉じちゃうんですか
過去ログを参照させて頂きましたが非常に参考になりました。ありがとうございます。
まさにログの質問者様と同じ考え方で考えておりました。
いわゆる最初に入力画面があり、そこから色々と遷移してきて戻ってきて・・・を繰り返すアプリケーション
を作成しているのでそのものズバリでした。
メインメニューをDisposeすると他のWindowも立ち上げてるはずなのになぜアプリが終了してしまうのか?
と悩んでいました。
これから全てDisposeではなくHideにしてどのように動作するのかを再度確認してみたいと思います。
ありがとうございました。

#問題Closeまで今暫くお待ち下さいませ。。。
引用返信 編集キー/
■40748 / inTopicNo.5)  Re[3]: 全画面アプリの画面遷移で他アプリにフォーカス移動してしまう
□投稿者/ ZAP (12回)-(2009/09/02(Wed) 09:10:32)
お世話になっております。


只今全ての画面をHideにして検証してみたところ他アプリに遷移してしまう現象はなくなったと思います。
これからシステム的にDisposeしても良いものはどれか等見直しをしてみます。
また、Dispose、Hide共に画面が切り替わる際にデスクトップの背景がみえてしまっています。
コレに関しては別スレッドかと思われますので少し調査してわからなければまた立てさせて頂きます、、、<スミマセン
本当にありがとうございました。
引用返信 編集キー/
■40750 / inTopicNo.6)  Re[4]: 全画面アプリの画面遷移で他アプリにフォーカス移動してしまう
□投稿者/ ZAP (13回)-(2009/09/02(Wed) 09:13:54)
たびたびゴメンナサイ・・・Closeします・・・^^;
解決済み
引用返信 編集キー/
■40751 / inTopicNo.7)  Re[3]: 全画面アプリの画面遷移で他アプリにフォーカス移動してしまう
□投稿者/ たくボン (187回)-(2009/09/02(Wed) 09:16:01)
No40747 (ZAP さん) に返信
> いわゆる最初に入力画面があり、そこから色々と遷移してきて戻ってきて・・・を繰り返すアプリケーション
> を作成しているのでそのものズバリでした。

遷移系のWindowの制御はちょっと癖があるけど、生成・破棄の問題で悩んでいるなら、画面を制御するクラスを別に設けてそこから制御するのもアリかと思う。
一昨日納品したシステムは、ちょうど画面遷移が複雑に絡むシステムだったのでUIP層にフロー制御するクラスを設けて、そこで画面の生成・破棄をしたかな。

画面に生成のロジックを書くのもいいと思うけど、画面と制御が切り離して設計できるなら別物として扱うのが楽かも。
引用返信 編集キー/
■40752 / inTopicNo.8)  Re[3]: 全画面アプリの画面遷移で他アプリにフォーカス移動してしまう
□投稿者/ 渋木宏明(ひどり) (1199回)-(2009/09/02(Wed) 09:24:54)
渋木宏明(ひどり) さんの Web サイト
> これから全てDisposeではなくHideにしてどのように動作するのかを再度確認してみたいと思います。

そういう方向に行っちゃいましたか。
個人的には、こういうケースでトップレベルウィンドウを閉じたり非表示にするのはキモチワルイと感じます。

まず、アプリケーション存命中、トップレベルウィンドウはずっと維持しておくとさまざまな問題が簡素化されます。
その上で、あなたが「画面」と認識しているものをフォームではなくユーザコントロールとして実装し、ユーザコントロールの表示・非表示で画面遷移を制御する方が、面倒事が少ないように思います。


引用返信 編集キー/
■40756 / inTopicNo.9)  Re[4]: 全画面アプリの画面遷移で他アプリにフォーカス移動してしまう
□投稿者/ ZAP (15回)-(2009/09/02(Wed) 09:41:32)
おお、皆様ありがとうございます(感涙
ディスカッションすると少しはまともになれる・・・カモ(笑

>たくボンさん
なるほど〜。たしかにそうするとデバッグ時も楽ですね。
ビジネスロジック層との切り離しはよくいわれることですが画面遷移も切り離すとキモチイイですね。

基本的に私はASP等(.NETじゃない時代^^;)が専門で仕事をしていて、今回はC#でシステム開発に参加したことがない
にも関わらずC#で個人で仕事を受けてしまって四苦八苦してました。
想像はしていましたが実際にプロジェクトでやったことがない言語だとこんなに不安だったとは(苦笑)
一つ一つの機能の自分の実装方法が正しい自信がない;;

ひどりさん
言葉足らずですみません。今まではプログラムが終了してしまうのでプログラムの開始画面は終了させずにHideしていました。
開始画面はメインの入力画面で、そこから情報を取得して後の画面で情報を表示、追加していくイメージです。
なのでおっしゃっている通りのトップレベルウィンドウ(これって最初の入力画面で認識あってますよね・・・?)は
非表示にはしますが残してあります。
全画面アプリなのでそのまま表示しておくと全画面が2つ出来てしまうのです。。。という認識なのですが勘違いしていたら
ご指摘お願いします。

また、ユーザーコントロール化については、なるほど。。。と思いました。たしかにそれならフォームではないのでデータの
受け渡しなどに悩まないですみますね!←ほとんど実装してしまった&納期がないので次で検討します!

いろいろな助言をいただき本当にありがとうございます。勉強になります!
#分類が.NET全般・・・c#にするべきでした。すみません。
引用返信 編集キー/
■40779 / inTopicNo.10)  Re[5]: 全画面アプリの画面遷移で他アプリにフォーカス移動してしまう
□投稿者/ 渋木宏明(ひどり) (1200回)-(2009/09/02(Wed) 19:05:42)
渋木宏明(ひどり) さんの Web サイト
> 全画面アプリなのでそのまま表示しておくと全画面が2つ出来てしまうのです。。。

なので、トップレベルウィンドウ(=Form 派生クラス)は1枚だけにして、「各画面」をユーザコントロールで表現するのです。

引用返信 編集キー/
■40782 / inTopicNo.11)  Re[6]: 全画面アプリの画面遷移で他アプリにフォーカス移動してしまう
□投稿者/ ZAP (17回)-(2009/09/02(Wed) 21:28:15)
ひどりさん
お世話になっております。

> なので、トップレベルウィンドウ(=Form 派生クラス)は1枚だけにして、「各画面」をユーザコントロールで表現するのです。
すみません、文章を読み取れてませんでした^^;
そうですね。ユーザーコントロール化しておけば上記の問題から解放されますよね。
全画面アプリは初めてだったので全然思いつきませんでした^^ ありがとうございました。

追伸、実はここでユーザーコントロールの話を伺って「そうか!」と思いついて3rdパーティのコントロールを導入予定
だったのですが自前でつくってしまいました^^ ありがとうございました〜(ちなみにグラフです・・・)
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -