Label.Margin
zwraca obiekt Padding
.
Ponieważ Padding
jest strukturą, to faktycznie zwróci kopię . Zmieniasz wartość tej kopii, a nie rzeczywisty margines kontroli. Ponieważ nie miałoby to zauważalnego efektu, VB właściwie to uniemożliwia.
Należy przypisać cały nowy margines. W rzeczywistości właściwość Margin
(lub raczej klasa Padding
) jest prawdopodobnie uszkodzona, ponieważ nie pozwala na łatwy sposób zmiany poszczególnych wartości.
Niestety, musimy po prostu z tym żyć. Tak aby zmienić tylko wartość Top
, musimy napisać:
Dim old As Padding = LabelAdapter.Margin
LabelAdapter.Margin = New Padding(old.Left, 8, old.Right, old.Bottom)
Dziwne, prawda?
Jeśli Intellisense nie sugeruje ci klasy Padding, ignoruj ją, ale częściej nie będzie działać; btw dlaczego to się dzieje? –
@WeaponX Nie rozumiem twojego komentarza. –
Przynajmniej przy użyciu VB.NET IDE (2013) nie zaproponuje ci niektórych klas, takich jak wypełnianie, dopóki nie napiszesz całej nazwy. –