2011-01-29 2 views
11

그래서 프로그래밍 방식으로 레이블을 추가하고 상단 여백을 값 8로 약간 변경해야합니다. 나는 그렇게 할 수 없습니다. 그래서 내 생각에 뭐가 잘못된거야? 이것은 나에게 오류를 제공Vb.net - 컨트롤 여백 값 설정

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

"는 식의 값이므로 할당의 대상이 될 수 없습니다."

답변

18

Label.MarginPadding 개체를 반환합니다.

Padding은 구조이기 때문에 실제로 복사본을 반환합니다. 실제 컨트롤의 여백이 아닌 해당 복사본의 Top 값을 변경하고 있습니다. 그게 눈에 띄는 효과가 없기 때문에, VB는 그것을 올바르게 방지합니다.

완전히 새로운 여백을 지정해야합니다. 실제로 Margin 속성 (또는 그보다는 Padding 클래스)은 쉽게 개별 값을 변경할 수 없기 때문에 논란의 여지가 있습니다.

불행히도, 우리는 단지 그것으로 살아야합니다. 그래서 그냥 Top 값을 변경하려면, 우리는 쓸 필요가 :

Dim old As Padding = LabelAdapter.Margin 
LabelAdapter.Margin = New Padding(old.Left, 8, old.Right, old.Bottom) 

가 이상한, 응?

+0

Intellisense가 Padding 클래스를 제안하지 않는 경우이를 무시합니다. 더 자주 작동하지 않을 수 있습니다. 왜이 일이 일어날까요? –

+0

@WeaponX 귀하의 의견을 이해할 수 없습니다. –

+0

적어도 VB.NET을 사용하면 IDE (2013)는 전체 이름을 쓸 때까지 Padding과 같은 클래스를 제안하지 않습니다. –