gpt4 book ai didi

c# - Winforms 开始居中(就高度而言)但在屏幕左侧

转载 作者:太空宇宙 更新时间:2023-11-03 23:32:32 25 4
gpt4 key购买 nike

我正在尝试将@HansPasant 的代码从vb.net 改编为c#。我还想对其进行调整,以便 winForms 从上到下开始居中,但从左到右在屏幕最左侧:

vb.net 从这里 How to set winform start position at top right? :

Public Class Form1
Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
Dim scr = Screen.FromPoint(Me.Location)
Me.Location = New Point(scr.WorkingArea.Right - Me.Width, scr.WorkingArea.Top)
MyBase.OnLoad(e)
End Sub
End Class

我当前的(错误的)尝试:

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

正如下面评论中所指出的,执行此代码的最佳点是在 OnLoad 方法的重写内,尽管 Load 事件在 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);
}

关于c# - Winforms 开始居中(就高度而言)但在屏幕左侧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31631559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com