.Net FormStartPosition.CenterScreen не центрируется - PullRequest
1 голос
/ 26 ноября 2008

Я пытаюсь центрировать форму в VB.net. Вместо того, чтобы центрировать форму, она заканчивается примерно посередине между центром и 0,0 (вверху слева).

Я использую код

Me.StartPosition = FormStartPosition.CenterScreen

Вызывается из метода IntializeDisplay, который, в свою очередь, вызывается из метода загрузки формы.

Полагаю, я устанавливаю некоторые свойства по пути, который портит вычисление центра, но я не уверен, что это может быть.

Если у кого-то есть идеи, они будут очень признательны.

Спасибо.

Ответы [ 5 ]

4 голосов
/ 06 февраля 2009

добавьте это в событие, и оно будет работать:

Public Sub New()

    ' This call is required by the Windows Form Designer.
    InitializeComponent()
    ' Add any initialization after the InitializeComponent() call.
    Me.StartPosition = FormStartPosition.CenterScreen

End Sub
3 голосов
/ 27 ноября 2008

Я думаю, что вы устанавливаете значение StartPosition слишком поздно в потоке - к тому моменту, когда вызывается Form.Load, загрузка уже завершена и форма имеет назначенную позицию.

Установите точку останова на строке кода, указанной в вашем вопросе, и посмотрите на позицию формы - она ​​уже будет в том месте, где она появляется.

Чтобы получить желаемый эффект, необходимо установить значение StartPosition до того, как форма начнет свою встроенную обработку местоположения. Я бы посоветовал поместить код в конструктор форм после вызова InitializeComponent ().

2 голосов
/ 02 марта 2017

Если вы изменяете размер формы или используете авторазмер, вам нужно использовать

    Me.CenterToScreen()

команда в конце события Load.

0 голосов
/ 02 марта 2017

Вместо того, чтобы полагаться на инициализацию формы для обработки ее начального местоположения, попробуйте вызвать метод для центрирования формы. Это позволяет центрировать форму даже после внесения изменений в размер после ее отображения.

Пример:

Me.CenterToScreen()

Или

Me.CenterToParent()

В зависимости от того, где вы пытаетесь центрировать форму.

0 голосов
/ 26 ноября 2008

Есть ли у вас какая-либо логика изменения размера / позиционирования? Если так, закомментируйте это и попробуйте снова.

Попробуйте установить Form.StartPosition в конструкторе (который установит его в InitializeComponent()) вместо события Load

Попробуйте сбросить значения Form.Location и Form.Size. Если ваша форма локализована, удалите запись Form.Location AND Form.Size в файле ресурсов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...