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

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

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

Re[2]: 複数重なったFormの最前面にあるものを取得したい


(過去ログ 125 を表示中)

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

■74794 / inTopicNo.1)  複数重なったFormの最前面にあるものを取得したい
  
□投稿者/ pod (27回)-(2015/01/29(Thu) 16:34:03)

分類:[C#] 

VS C# 2013 で複数のフォームを持つアプリケーションがあり、
あるフォームが他のフォームの上に重なった際にイベントを起こそうと思っています。
感覚としてはドラッグ&ドロップのような動作を求めています。

List<Form> として小フォームのリストがまとめられていて、
MouseMoveで移動しているフォームが他の小フォームに対して
childForm.Bounds.contains(this.Bounds)
のとき関数を実行するつもりでいましたが、この方法では
ドロップ先のフォームの下にもう一枚別のフォームが重なっていた時に区別ができません。
重なっている子フォームのうち最前面のフォームに対してのみイベントを
発生させたいのですがなにか方法はあるでしょうか?

ちなみに全てのフォームはTopMost=trueになっていてクリックすると最前面に来ます。
よろしくお願いします。

引用返信 編集キー/
■74796 / inTopicNo.2)  Re[1]: 複数重なったFormの最前面にあるものを取得したい
□投稿者/ shu (683回)-(2015/01/29(Thu) 16:54:29)
No74794 (pod さん) に返信

> ちなみに全てのフォームはTopMost=trueになっていてクリックすると最前面に来ます。
> よろしくお願いします。
>
このときに該当フォームをリストのTopに持ってくるなどすればリストに入っている順で
処理すれば出来そうな気がします。
引用返信 編集キー/
■74822 / inTopicNo.3)  Re[2]: 複数重なったFormの最前面にあるものを取得したい
□投稿者/ pod (28回)-(2015/01/30(Fri) 19:57:48)
やはり自分で順番を記録しておく他無いのですね。
アドバイスいただいたとおりMouseDown時にリストの先頭に移動する方法で狙った動作が実現できました。
回答有難うございます。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -