表示位置を指定した場合にフォームの表示位置がずれる

表示位置を指定した場合にフォームの表示位置がずれる現象が起きる場合があります。

ケース1

private void Button1_Click(object sender, EventArgs e)
{
 form2.Left = 120;
 form2.Top = 120;
 form2.Show();
}

上記コードで初回のみフォームの表示位置がずれる場合があります。この場合の原因としては、フォームのStartPositionプロパティで設定したロジックが優先されている可能性があります。フォームのStartPositionプロパティをManualにすることで、指定した位置にフォームを表示できます。

ケース2

private void Button1_Click(object sender, EventArgs e)
{
 form2.Left = this.Left - form2.Width - 16;
 form2.Top = this.Top;
 form2.Show();
}

上記コードで初回のみフォームの表示位置がずれる場合があります。form2のwidthがプロパティエディタで設定した違う値のためずれます。form2のwidthはshow()の直後にプロパティエディタで設定した幅と高さが設定されるため、Show()の後でLeftとTopを指定するとずれなくなります。

対策

private void Button1_Click(object sender, EventArgs e)
{
 form2.Show();
 form2.Left = this.Left - form2.Width - 16;
 form2.Top = this.Top;
}


AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2010-07-22
Copyright © 1995–2025 iPentec all rights reserverd.