DOBON.NET DOBON.NETプログラミング掲示板過去ログ

フォームのLocationについて

環境/言語:[VB.NET]
分類:[.NET]

VB2005です。
動作解決はしているのですが、理由がわからず質問させてもらいます。

フォームにボタンを配置し、押下でTimer1が動くようにしています。
Timer1ではフォーム2をデスクトップ上にランダムに表示させる様にしています。
(モグラたたきを作っています)


Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim fm2 As New Form2()
Dim pint As New Point()
Dim ran As New Random()
Dim scrn As Screen = Screen.PrimaryScreen

pint.X = ran.Next((scrn.WorkingArea.Width - 100))
pint.Y = ran.Next((scrn.WorkingArea.Height - 100))

@fm2.Show()
Afm2.Location = pint
End Sub


上記の様に@Showの後にALocationを行うと希望通り画面上の色々な場所にフォームが配置されるのですが、逆にALocationの後に@Showを行うと画面左上の方にしか配置されません。
この違いが判らず悩んでいます。
ご教授お願いします。
■No23792に返信(ねこさんの記事)
> Locationの後にShowを行うと画面左上の方にしか配置されません。

StartPosition プロパティには、何を指定していますか?
魔界の仮面弁士さん

> StartPosition プロパティには、何を指定していますか?
Form1もForm2も特に指定はしておらず、プロパティでWindowsDefaultLocationです。

よろしくお願いいたします。
■No23794に返信(ねこさんの記事)
>>StartPosition プロパティには、何を指定していますか?
> Form1もForm2も特に指定はしておらず、プロパティでWindowsDefaultLocationです。
>

StartPosition = FormStartPosition.Manual
任意の位置(Locationプロパティ)に表示する場合、
StartPositionプロパティをFormStartPosition.Manualに
設定する必要がある。

http://www.atmarkit.co.jp/fdotnet/dotnettips/353dlglocation/dlglocation.html
やじゅさん

> StartPosition = FormStartPosition.Manual
> 任意の位置(Locationプロパティ)に表示する場合、
> StartPositionプロパティをFormStartPosition.Manualに
> 設定する必要がある。
任意の位置の表示はStartPositionを指定しないといけなかったのですね。
知りませんでした。
勉強になりました。

魔界の仮面弁士さん、やじゅさん、どうもありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板