如何在C# Windows Forms中将打开的窗体定位到特定位置?

30

表单中的 Location 属性设置为 0,0(属性窗口)。但是,表单没有在指定位置打开。我是否遗漏了什么?

4个回答

65
你需要将 StartPosition 设置为手动,以使窗体的起始位置设置为 Location 属性中的值。
public Form1()
{
    InitializeComponent();
    this.StartPosition = FormStartPosition.Manual;
    this.Location = new Point(0, 0);
}

FormStartPosition.Manual 的智能感知摘要

FormStartPosition FormStartPosition.Manual

窗体的位置由 System.Windows.Forms.Control.Location 属性确定。


我已经丢失了有关手动定位的部分一个小时了。谢谢 :) - Dan
有没有办法在设置初始位置后重新定位winForm?这个线程的代码可以工作,但是如果我隐藏了窗体,然后尝试以新位置再次显示它,它仍然停留在初始位置。一种解决方法是每次创建一个新的窗体对象,但我想使用同一个对象。 - AngelAvila

6
默认情况下,启动位置设置为WindowsDefaultLocation,这将导致窗体忽略您所设置的位置。要轻松地强制执行设置位置,请将StartPosition更改为Manual。 StartPosition属性图片

5

如果您忘记将StartPosition设置为FormStartPosition.Manual,则将Location设置为0,0不会产生影响。

该属性使您能够在运行时设置窗体的起始位置。可以通过设置位置属性手动指定窗体的位置,也可以使用Windows指定默认位置。您还可以将窗体定位到屏幕中心或其父窗体的中心,以显示多文档界面(MDI)子窗体等窗体。


3
这似乎是一条评论,而不是答案。 - Metro Smurf
2
我想知道为什么这个答案被投票否决,而其他相同的答案却被赞同。原帖明显是从设计师窗口设置其属性,我认为只是在寻找使用设计师的答案。 - Steve
1
我做了。当答案发布时,我只看到:“不要忘记将StartPosition设置为Manual”。没有链接或其他任何东西。 - Metro Smurf
当然,@MetroSmurf,答案非常简短,没有太多需要补充的。 - Steve

3

尝试:

this.Location = new Point(Screen.PrimaryScreen.Bounds.X, //should be (0,0)
                          Screen.PrimaryScreen.Bounds.Y);
this.TopMost = true;
this.StartPosition = FormStartPosition.Manual;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接