2015-02-01 4 views
-1

Это должно центрировать menuLabel на оси X. Но когда я запускаю его, menuLabel слишком далеко вправо.Как центрировать управление на основном экране?

Любые идеи, почему это происходит?

menuLabel.Left = Screen.PrimaryScreen.Bounds.Left + 
        (Screen.PrimaryScreen.Bounds.Width/2) - (menuLabel.Width/2); 
+1

Ваша форма не является такой же, как основного экрана. – SLaks

+0

Ваш расчет выглядит нормально. Что еще вы можете нам сказать? Каковы значения всех этих свойств и какие значения должны быть? –

ответ

0

Ваш menuLabel расположен на некотором Form или какой-либо другой элемент управления контейнера, поэтому его координаты относительно этого родительского контроля или Form.
Чтобы преобразовать координаты экрана в локальные, используйте метод Control.PointToClient.
Пример для Form в качестве контейнера (при условии, этот код находится в Form «s класс):

menuLabel.Left = PointToClient(Screen.PrimaryScreen.Bounds.Left + 
       (Screen.PrimaryScreen.Bounds.Width - menuLabel.Width)/2); 

Пример для someControl в качестве контейнера:

menuLabel.Left = someControl.PointToClient(Screen.PrimaryScreen.Bounds.Left + 
       (Screen.PrimaryScreen.Bounds.Width - menuLabel.Width)/2); 
Смежные вопросы