Проблема StartPosition в C #? - PullRequest
0 голосов
/ 31 января 2011

Я хочу показать свой 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);
    }
}

1 Ответ

3 голосов
/ 31 января 2011

FormStartPosition.CenterScreen может быть проблемой, если форма масштабируется, приспосабливаясь к настройке видео DPI. Вставьте этот код в форму, чтобы исправить это:

    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);
    }
...