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

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

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

Re[4]: コントロールの重なり


(過去ログ 87 を表示中)

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

■52131 / inTopicNo.1)  コントロールの重なり
  
□投稿者/ APM (1回)-(2010/08/01(Sun) 15:21:04)

分類:[C#] 

コントロール同士がお互い重なると、描画が変わる(見えない領域が出る)のですが、それを制御したいので重なったかどうかの判断をしたいです。
どうすればよいのでしょうか?
自分としては、Locationをいちいち取得してやるしかないのかなあ・・・とは思いますが、もっと簡単な方法がありましたら教えてください。

引用返信 編集キー/
■52132 / inTopicNo.2)  Re[1]: コントロールの重なり
□投稿者/ Azulean (584回)-(2010/08/01(Sun) 16:16:48)
button1 と button2 が重なっているかどうかを見るなら、こんなのとか。

MessageBox.Show(button1.Bounds.IntersectsWith(button2.Bounds).ToString());
引用返信 編集キー/
■52182 / inTopicNo.3)  Re[2]: コントロールの重なり
□投稿者/ APM (2回)-(2010/08/02(Mon) 18:51:35)
No52132 (Azulean さん) に返信
> button1 と button2 が重なっているかどうかを見るなら、こんなのとか。
>
> MessageBox.Show(button1.Bounds.IntersectsWith(button2.Bounds).ToString());

ありがとうございます。
Bounds.IntersectsWithでできました。これで重なりを取得できますね。
また質問で申し訳ないのですが、たとえばbutton1がフォーム上の"何か他のコントロール"と重なっているかを判断するには、フォーム上のコントロールをすべて取得して、foreachにかけてやるしかないのですか?

よろしくお願いします。
引用返信 編集キー/
■52187 / inTopicNo.4)  Re[3]: コントロールの重なり
□投稿者/ よねKEN (564回)-(2010/08/02(Mon) 23:58:49)
2010/08/03(Tue) 00:00:41 編集(投稿者)

> また質問で申し訳ないのですが、たとえばbutton1がフォーム上の"何か他のコントロール"と重なっているかを判断するには、
> フォーム上のコントロールをすべて取得して、foreachにかけてやるしかないのですか?

ないと思います。
でも、そもそもなぜそのようなことをしたいのでしょう?

最初に配置するときに重ならないように配置しておけば、それ以後、重なることは通常ならありません。
動的にコントロールを配置するような場合もレイアウト系のコントロール(FlowLayoutPanelやTableLayoutPanel)を
使ったりレイアウト系のプロパティ(Dock、Anchor、Padding、Margin)などで制御することで重なるようなことには通常はなりません。
コントロールをタイマーか何かで移動させるような処理を書いているのでしょうか?

私の想像の範囲では、何をしたいのかが見えません。
内容によっては別のアプローチもあるかもしれませんので、差支えなければどういうことを実現したいのかを明らかにされてはどうでしょう?



引用返信 編集キー/
■52188 / inTopicNo.5)  Re[3]: コントロールの重なり
□投稿者/ Azulean (585回)-(2010/08/03(Tue) 00:00:55)
No52182 (APM さん) に返信
> また質問で申し訳ないのですが、たとえばbutton1がフォーム上の"何か他のコントロール"と重なっているかを判断するには、
> フォーム上のコントロールをすべて取得して、foreachにかけてやるしかないのですか?

Controls プロパティに対して繰り返すしかないかもしれません。

特定の座標(点)にあるコントロールを特定するだけであれば、Control.GetChildAtPoint メソッドが使えそうですが、これはあくまで「点」であり、「矩形」ではありませんので。
http://msdn.microsoft.com/ja-jp/library/a6zktd23.aspx
引用返信 編集キー/
■52244 / inTopicNo.6)  Re[4]: コントロールの重なり
□投稿者/ APM (3回)-(2010/08/04(Wed) 11:14:26)
ありがとうございます。
一応解決しました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -