【发布时间】:2015-09-17 04:39:01
【问题描述】:
我有一个包含 GroupBox 的表单,在这个 GroupBox 中有一些标签和一个 CheckBox。 CheckBox 在设计时设置为“Checked”,这意味着当它加载时默认为“Checked”。因此,当创建此表单的新实例时,该复选框的 CheckChanged 事件会在表单的 Load 事件之前触发。标签的文本值取决于复选框是否被选中。
这是在复选框的 CheckChanged 事件中,该事件在表单的 Load 事件之前触发:
If chkUseAsFull.Checked Then
fraHalf.Text = "Full Spacing"
lblLitHalfSpacing.Text = "Spacing"
lblLitHalfSpeed.Text = "Speed"
txtHalfSpacing.Text = txtSpacing.Text
txtHalfSpacing.Enabled = False
cmdAdjustHalf.Enabled = False
Else
fraHalf.Text = "Half Spacing"
lblLitHalfSpacing.Text = "1/2 Spacing"
lblLitHalfSpeed.Text = "1/2 Speed"
txtHalfSpacing.Text = Format(spc, "##0.00")
txtHalfSpacing.Enabled = True
cmdAdjustHalf.Enabled = True
End If
-
fraHalf是分组框,lblLitHalfSpacing和lblLitHalfSpeed是其中的标签。
请注意,在设计时,组框和标签的文本值是未选中复选框时指定的值。
但是当我启动这个表单时,组框的文本是“全间距”,但标签的文本是“1/2 间距”和“1/2 速度”。
为什么组框的文本会根据复选框的选中值正确显示,而不是那些标签的文本?
【问题讨论】:
-
不要依赖设计器为你运行代码。标签可能会发生变化,但随后设计人员可能会稍后在代码中将它们改回其原始属性。这意味着如果您知道默认已选中,则应在该默认模式下创建标签。或者在加载事件中,你可以自己调用它
fraHalf_CheckChanged(fraHalf, EventArgs.Empty) -
控件按照您添加到表单的顺序进行初始化。您的标签可能正在更改,但在运行设计器代码时又更改回来。标签文本中的断点已更改(查看设计器代码)将确认
-
user3697824 - 我不知道控件添加到表单的顺序。我没有把这个表格放在一起,所以它一定是以标签出现在复选框之后的方式完成的。很高兴知道! @LarsTech - 是的,改变设计师的这些价值观就行了。如果您将此作为答案与 user3697824 提出的观点一起发布,我会接受。谢谢!
标签: vb.net text checkbox label groupbox