C# Winforms以居中(高度)开始,但位于屏幕左侧

C# Winforms以居中(高度)开始,但位于屏幕左侧,c#,vb.net,C#,Vb.net,我正在尝试将@HansPasant的代码从vb.net改编为c。我还想调整它,使winForms从上到下居中开始,但从左到右开始在屏幕的最左边: vb.net从这里开始: 我当前的(错误)尝试: 如果我理解了你的问题,你需要 别忘了 正如下面注释中所指出的,执行此代码的最佳点是在OnLoad方法的覆盖范围内,尽管在99%的情况下加载事件应该可以正常工作。另外,使用Screen.WorkingArea.Left属性将窗体定位在屏幕左侧可能比使用固定的最左侧位置更好。这可以避免最左边的可用位置不在零

我正在尝试将@HansPasant的代码从
vb.net
改编为
c
。我还想调整它,使
winForms
从上到下居中开始,但从左到右开始在屏幕的最左边:

vb.net
从这里开始:

我当前的(错误)尝试:


如果我理解了你的问题,你需要

别忘了

正如下面注释中所指出的,执行此代码的最佳点是在OnLoad方法的覆盖范围内,尽管在99%的情况下加载事件应该可以正常工作。另外,使用
Screen.WorkingArea.Left
属性将窗体定位在屏幕左侧可能比使用固定的最左侧位置更好。这可以避免最左边的可用位置不在零坐标处的边缘情况

protected override void OnLoad(EventArgs e)
{
    var scr = Screen.PrimaryScreen;
    this.Location = new Point(scr.WorkingArea.Left, 
                             (scr.WorkingArea.Height - this.Height) / 2);
    base.OnLoad(e);
}

谢谢steve…签名呢?:这比我的问题更接近:
受保护的覆盖void OnLoad(object sender,EventArgs e)
但仍然不完全如此我认为你可以毫无问题地使用Form\u Load事件sok-good-Form\u Load事件似乎很好-这行代码不是必需的:
this.OnLoad(e)
scr.工作区左侧
正确。如果有任何东西停靠在屏幕的左侧,它将不会是
0
。\u Form\u Load可以正常工作,但在许多情况下,最好是OnLoad。由于遗留原因,表单加载仍然存在。如果您对更多内容感兴趣,请查看以下内容:
private void scriptSurfer_Load(object sender,EventArgs e)
{
    var scr = Screen.FromPoint(this.Location);
    this.Location = New Point(scr.WorkingArea.Left - this.Width, scr.WorkingArea.Top);
    this.OnLoad(e);
}
The LeftMost position of the Screen = 0
Vertical Centering = (Screen.Height - form.Height) / 2
this.Location = new Point(0, (scr.WorkingArea.Height - this.Height) / 2);
Form.StartPosition = FormStartPosition.Manual
protected override void OnLoad(EventArgs e)
{
    var scr = Screen.PrimaryScreen;
    this.Location = new Point(scr.WorkingArea.Left, 
                             (scr.WorkingArea.Height - this.Height) / 2);
    base.OnLoad(e);
}