2011-01-29 99 views
11

所以,我正在以編程方式添加一個標籤,而且我需要將頂部邊距修改爲值8.我不能那麼明顯地做到這一點,所以我的想法有什麼問題?Vb.net - 設置控件邊距值

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

這給了我錯誤「表達式是一個值,因此不能作爲一個任務的目標」。

回答

18

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) 

怪異的,是吧?

+0

如果Intellisense不提示你Padding類,忽略它,更常見的是它不會工作;順便說一句,爲什麼會發生? – 2016-03-15 19:22:12