- PR -

フォームの表示順とフォーカスについて教えてください

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

MrKongさんの書き込み (2006-10-23 13:48) より:

実行順に保証がないというお話ですが、実際に順序が入れ替わる(フォームの表示順が入れ替わる)現象って、そんなに頻繁に起きてはいないんですよね。
(snip)
実行順が不定の場合 = 半々くらいの割合でどちらの現象も起きると考えがちですがそうでもないのですね。


それを 「保証がない」 と言います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2006-10-23 14:07
引用:

まずは、LoadイベントをActivatedイベントに移し、
強制的にアクティブになるようなコードを入れる方向で検討中です。


メソッドあったけなぁ?最悪SetForegroundWindow APIということで。

引用:

実際に順序が入れ替わる(フォームの表示順が入れ替わる)現象って、
そんなに頻繁に起きてはいないんですよね。


何度も言っていますが、異なるプロセス間のお話ですので
「2つのフォーム」という考え方をしてはいけません。
言ってみれば、2つのアイコンを同時にダブルクリックした後に、
どっちが結果的に前面になるかはわからないということと同じです。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-10-23 14:16
引用:

まどかさんの書き込み (2006-10-23 14:07) より:

メソッドあったけなぁ?最悪SetForegroundWindow APIということで。


VB 的には AppActivate メソッドですが、これは API 関数のラッパにすぎないので、API でも良いでしょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
MrKong
常連さん
会議室デビュー日: 2004/01/24
投稿数: 22
投稿日時: 2006-10-23 15:48
引用:

まどかさんの書き込み (2006-10-23 14:07) より:

言ってみれば、2つのアイコンを同時にダブルクリックした後に、
どっちが結果的に前面になるかはわからないということと同じです。




とても分かりやすいご説明ありがとうございます。
どうも素人的発想が抜けません。。。。
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2006-10-23 15:59
引用:

まどかさんの書き込み (2006-10-23 14:07) より:

メソッドあったけなぁ?最悪SetForegroundWindow APIということで。


http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200402_04020031.html
こちらの魔界の仮面弁士さんの解説を読んでおくと少し幸せになれるかもしれませんね。

# 先日同じようなことでお世話になったところなのでage
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2006-10-23 16:56
引用:

http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200402_04020031.html
こちらの魔界の仮面弁士さんの解説を読んでおくと少し幸せになれるかもしれませんね。


昔、そのOSの仕様変更直後に周りが「これじゃだめだ」と騒ぎ
全クライアントをそのタイムアウト値(レジストリ)を書き換えて納品ってことをしてましたね、そんとき。
#やりたくないなぁ、標準の値を変えるなんて。。。

あ、窓の手でもできますね。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-10-23 21:35
引用:

じゃんぬねっとさんの書き込み(2006-10-20 20:36 )より:
引用:

Jittaさんの書き込み (2006-10-20 18:43) より:

process.startって、すぐ帰ってくるんじゃなかった?


そんなことはないと思いますよ。
すぐだとしても、別のスレッドの処理が入り込む余地は多いにあります。


 えっと、別プロセスが上がるので、手前でスレッド分岐する必要ないでしょ。という意味でした。
??実行させたプロセスが終了するまで、Process.Start がブロックしないですよね??


引用:

MrKongさんの書き込み(2006-10-20 13:51)より:
 AP1のForm1で画面上に文字スクロールを表示しつつ、
 別で内部計算処理を実行する


 この場合、AP1 の Form 上で文字をスクロール表示させるのは、タイマー イベントがよいかもしれません。別スレッドを起こして、そこで Sleep して Form を操作する・・・なんてことをやると、同期をとるのを忘れる可能性が大です。そして、「たまたま動いている」のを、「それが正解の処理」と誤解する可能性が大。
 AP2 は、別プロセスで起動するので、手前でスレッドを分岐させる必要はありません。しかし、OnIndle などで1回だけ、自身にフォーカスさせるという処理がいるでしょう。

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

Jittaさんの書き込み (2006-10-23 21:35) より:

 えっと、別プロセスが上がるので、手前でスレッド分岐する必要ないでしょ。という意味でした。
??実行させたプロセスが終了するまで、Process.Start がブロックしないですよね??


おっと... すぐ帰ってくるから問題なし、という意味ではなかったのですね。
まどかさんと私に対しての反論だと思っていました。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

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