2012-03-01 1 views
0

私は親フォームを画面の中央に配置しようとしていますが、画面の中央にはセンタースクリーンとセンター親とどちらも表示されません。 私はGoogleを試してみましたが、一番上の結果がたくさんありましたが、一番上の機能には興味がありません。上のすべてのウィンドウと同じではなく、正しいパラメータを見つけることができません。C++ WinFormの画面上部にはどのように配置するのですか?

誰もがこの方法を見つけましたか?

答えて

1

Locationプロパティを使用する必要がありますForm

はここY = 0にフォームをシフトアップする簡単な例です:

void Form1_Load(object sender, EventArgs e) 
{ 
    this.Location = new Point(this.Location.X, 0); 
} 

編集:がここにフォームが、画面の上部に集中されていることを確認します例です。

void Form1_Load(object sender, EventArgs e) 
{ 
    int x = (Screen.PrimaryScreen.Bounds.Width - this.Width)/2; 
    this.Location = new Point(x, 0); 
} 

注:

  • この例では、C#Winフォームのためのものです。
  • あなたのタイトルはC++WinFormsを指しています。これは混同しないためです。
    C#WinForms、またはC++/CLI WinFormsを指しています(C++ MFCフォームを意味していないと仮定します)。
+0

これは、Form1がStartPosition = CenterScreenで設計されている場合にのみ機能します。そうでない場合は、Xを計算します。 – Steve

+0

@Steve:正しいです。私は自分の答えを更新しました。ありがとう。 – AVIDeveloper

+0

私はC++/CLI WinFormsを参照しています:) –

0

ここでそれを行うための方法です:

public static class FormExtensions 
{ 
    public static void CentreTop(this Form form) 
    { 
     form.Location = new Point((Screen.PrimaryScreen.Bounds.Width - form.Width)/2, 0); 
    } 
} 

とコンテキストで使用:

public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 

      this.StartPosition = FormStartPosition.Manual; 

      this.Resize += Reposition; 
      this.Move += Reposition; 
     } 

     private void Reposition(object sender, EventArgs e) 
     { 
      this.CentreTop();  
     } 
    } 

あなたはあなたがいない場合には中央にいる画面についてのいくつかのロジックを追加するようなことがあり常にPrimaryScreenを使用します。

関連する問題