C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
C# と VB.NET の入門サイト
Re[4]: MDIでウインドウの位置を取得する方法
(過去ログ 172 を表示中)
掲示板トップ
C# と VB.NET 入門
新規作成
利用方法/規約
トピック表示
ランキング
記事検索
過去ログ
[トピック内 5 記事 (1 - 5 表示)] <<
0
>>
■99244
/ inTopicNo.1)
MDIでウインドウの位置を取得する方法
▼
■
□投稿者/ ゆさっぷ
(1回)-(2022/02/25(Fri) 17:10:10)
分類:[.NET 全般]
VB.NETでMDIアプリケーションを開発しています。
親フォームParentFormのウインドウの左上の端を原点とした
子フォームChildFormのウインドウの位置を取得したいと考えています。
そのために、
子フォームの親フォームにおけるクライエント座標に
タイトルバーとメニューバーの高さを足し算してみたのですが、
Dim RectLocal As Rectangle = ChildForm.Bounds + SystemInformation.CaptionHeight + SystemInformation.MenuHeight
わずかにY方向に下にずれてしまいます(つまり、Y値が正に大きすぎる)。
このわずかなずれは何によって生じるものでしょうか?
もっと一発で子フォームの位置を取得できる方法ってないでしょうか?
引用返信
編集キー/
編集
■99247
/ inTopicNo.2)
Re[1]: MDIでウインドウの位置を取得する方法
▲
▼
■
□投稿者/ KOZ
(223回)-(2022/02/25(Fri) 18:12:07)
■
No99244
(ゆさっぷ さん) に返信
> VB.NETでMDIアプリケーションを開発しています。
> 親フォームParentFormのウインドウの左上の端を原点とした
> 子フォームChildFormのウインドウの位置を取得したいと考えています。
スクリーン座標に変換して求めます。
Dim localLocation As Point = ChildForm.Parent.PointToScreen(ChildForm.Location) - CType(ParentForm.Location, Size)
引用返信
編集キー/
編集
■99254
/ inTopicNo.3)
Re[2]: MDIでウインドウの位置を取得する方法
▲
▼
■
□投稿者/ ゆさっぷ
(2回)-(2022/02/27(Sun) 12:21:00)
ありがとうございます。
うまく取得することができました。
知らなかったのですが、
Point変数とSize変数を引き算できるのはなぜなのでしょうか?
Point変数同士は引き算できないのに
よりによって、異なるタイプ変数で引き算できるというのは不思議です。
検索して調べても意外と情報は見つかりませんでした。
あと、フォームの位置だけでなく、サイズもRectangleの形で取得したのですが
RectLocal = New Rectangle(localLocation.X, localLocation.Y, ChildForm.Width, ChildForm.Height)
のようにして、変換する必要がありますか?
Rectangleも一発で取得できる方法があればお教えください。
引用返信
編集キー/
編集
■99255
/ inTopicNo.4)
Re[3]: MDIでウインドウの位置を取得する方法
▲
▼
■
□投稿者/ KOZ
(224回)-(2022/02/27(Sun) 12:59:42)
■
No99254
(ゆさっぷ さん) に返信
> 知らなかったのですが、
> Point変数とSize変数を引き算できるのはなぜなのでしょうか?
演算子がオーバーロードされているからです
Point.Subtraction(Point, Size) 演算子
https://docs.microsoft.com/ja-jp/dotnet/api/system.drawing.point.op_subtraction?view=netframework-4.8
> RectLocal = New Rectangle(localLocation.X, localLocation.Y, ChildForm.Width, ChildForm.Height)
RectLocal = New Rectangle(localLocation, ChildForm.Size)
のようにも書けます。
引用返信
編集キー/
編集
■99264
/ inTopicNo.5)
Re[4]: MDIでウインドウの位置を取得する方法
▲
▼
■
□投稿者/ ゆさっぷ
(3回)-(2022/03/01(Tue) 19:02:20)
解決しました。
どうもありがとうございます。
解決済み
引用返信
編集キー/
編集
トピック内ページ移動 / <<
0
>>
このトピックに書きこむ
過去ログには書き込み不可
管理者用
-
Child Tree
-