如何在C ++ WinForm的屏幕顶部居中?

时间:2012-03-01 21:01:42

标签: winforms c++-cli position center

我正在尝试将我的父窗体置于屏幕顶部,但它只显示中心屏幕和中心父级,并且它们都不在屏幕顶部。 当我尝试使用Google时,它为我提供了大量包含最顶层的结果,但我对最顶层的功能没有兴趣,我希望它在屏幕顶部,如在位置0,而不是在所有窗口上方,我无法找到正确的参数。

有没有人遇到过这种方法?

2 个答案:

答案 0 :(得分:1)

您需要使用Location的{​​{1}}属性。

这是一个简单的示例,将表单转换为Form

Y = 0

编辑:以下是一个示例,确保表单也集中在屏幕顶部。

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

注意:

  • 此示例适用于C#WinForm。
  • 我提到它的原因是因为你的标题是指void Form1_Load( object sender, EventArgs e ) { int x = (Screen.PrimaryScreen.Bounds.Width - this.Width) / 2; this.Location = new Point( x, 0 ); } C++,它们不混合。
    要么你指的是C#WinForms,要么指C ++ / CLI WinForms(我假设你不是指C ++ MFC表格)。

答案 1 :(得分: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,您可能想要添加一些关于哪个屏幕居中的逻辑。