VB.NET - 设置控件的边距值

12

我正在通过编程方式添加标签,需要将顶部边距微调为8。我无法通过常规方式实现,那么我的想法有什么问题?

Dim LabelAdapter As New Label
LabelAdapter.text = "Adapter"
LabelAdapter.Margin.Top = 8
这给我报错了:“表达式是一个值,因此不能成为赋值的目标”。
1个回答

22

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)

很奇怪,对吧?


如果Intellisense没有建议您使用Padding类,请忽略它,往往它仍然可以工作;顺便问一下,为什么会发生这种情况? - Ed_
@WeaponX,我不理解你的评论。 - Konrad Rudolph
至少在使用VB.NET的IDE(2013)时,直到您编写完整名称,它才会建议您使用一些类,例如Padding。 - Ed_
@WeaponX 好的,但我不确定那与这有什么关系。这可能意味着他们的建议启发式算法存在缺陷,也可能没有,我不清楚。 - Konrad Rudolph

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接