Vb.net - настройка значения поля управления

Итак, я добавляю ярлык программно, и мне нужно немного изменить верхний край к значению 8. Я не могу сделать это очевидным образом, так что не так с моим мышлением?

Dim LabelAdapter As New Label
LabelAdapter.text = "Adapter"
LabelAdapter.Margin.Top = 8

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

Ответ 1

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)

Странно, да?