Label.Margin
возвращает объект Padding
.
Поскольку Padding
является структурой, она на самом деле вернет копию . Вы изменяете значение Top
этой копии, а не фактическое поле элемента управления. Поскольку это не будет иметь заметного эффекта, VB правильно предотвращает это.
Вам необходимо назначить совершенно новое поле. На самом деле свойство Margin
(точнее, класс Padding
) возможно сломано, поскольку не позволяет легко изменять отдельные значения.
К сожалению, мы просто должны с этим жить. Таким образом, чтобы изменить только значение Top
, нам нужно написать:
Dim old As Padding = LabelAdapter.Margin
LabelAdapter.Margin = New Padding(old.Left, 8, old.Right, old.Bottom)
Странно, да?