C# 中的 StartPosition 问题?

发布于 2024-10-15 10:28:08 字数 847 浏览 2 评论 0原文

我想在中心屏幕中显示我的 WinApp,因此我将 StartPosition 属性设置为 CenterScreen 但窗口没有显示在屏幕中心。

有什么问题吗?我错过了什么吗?

PS:
我从主窗口和按钮显示该窗口。

编辑:
我用来显示窗口的代码。

Form_CO form_CO = new Form_CO();
void button_CO_Click(object sender, EventArgs e)
{
    try
    {
        //StaticVariables.Form_CO_IsShown is to prevent opening the same multiple windows
        if (!StaticVariables.Form_CO_IsShown)
        {
            form_CO = new Form_CO();
            form_CO.Show();
            StaticVariables.Form_CO_IsShown = true;
        }
        else
        {
            form_CO.WindowState = FormWindowState.Normal;
            form_CO.Activate();
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

I wanna show my WinApp in Center Screen, so I set StartPosition property to CenterScreen but the window doesn't show in center of screen.

What's wrong with it ? Am I missing something?

P.S:
I show the window from a main window and with a button.

Edit:
The code that I'm using to show the window.

Form_CO form_CO = new Form_CO();
void button_CO_Click(object sender, EventArgs e)
{
    try
    {
        //StaticVariables.Form_CO_IsShown is to prevent opening the same multiple windows
        if (!StaticVariables.Form_CO_IsShown)
        {
            form_CO = new Form_CO();
            form_CO.Show();
            StaticVariables.Form_CO_IsShown = true;
        }
        else
        {
            form_CO.WindowState = FormWindowState.Normal;
            form_CO.Activate();
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

影子的影子 2024-10-22 10:28:08

如果表单重新缩放、调整自身以适应视频 DPI 设置,FormStartPosition.CenterScreen 可能会出现问题。将此代码粘贴到您的表单中以修复它:

    protected override void OnLoad(EventArgs e) {
        var scr = Screen.FromPoint(this.Location);
        this.Left = scr.WorkingArea.Left + (scr.WorkingArea.Width - this.Width) / 2;
        this.Top = scr.WorkingArea.Top + (scr.WorkingArea.Height - this.Height) / 2;
        base.OnLoad(e);
    }

FormStartPosition.CenterScreen can be a problem if the form rescales, adjusting itself to the video DPI setting. Paste this code in your form to fix it:

    protected override void OnLoad(EventArgs e) {
        var scr = Screen.FromPoint(this.Location);
        this.Left = scr.WorkingArea.Left + (scr.WorkingArea.Width - this.Width) / 2;
        this.Top = scr.WorkingArea.Top + (scr.WorkingArea.Height - this.Height) / 2;
        base.OnLoad(e);
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文