Vb.net - Установка значения маржи элементов управления - PullRequest
11 голосов
/ 29 января 2011

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

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

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

1 Ответ

18 голосов
/ 29 января 2011

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)

Странно, да?

...