2011-01-29 13 views
11

Dodaję więc programistkę programowo i potrzebuję trochę zmienić górny margines na wartość 8. Nie mogę tego zrobić w oczywisty sposób, więc co jest nie tak z moim myśleniem?Vb.net - Ustawienie wartości marginesu kontrolnego

Daje mi to błąd "Wyrażenie jest wartością i dlatego nie może być celem zadania".

Odpowiedz

18

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?

+0

Jeśli Intellisense nie sugeruje ci klasy Padding, ignoruj ​​ją, ale częściej nie będzie działać; btw dlaczego to się dzieje? –

+0

@WeaponX Nie rozumiem twojego komentarza. –

+0

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. –

Powiązane problemy