我一直在思考这个问题已有一段时间了。是否有一种整洁的方式将Label
与一个以功能方式标记的控件“连接”起来?
例如,您有一个表单来创建新的用户个人资料。如果用户未填写必填字段,则Label
或TextBox
或NumericUpDown
的{{1}}会变为红色。不知何故,Label
必须知道它属于哪个Control
,反之亦然。
我现在所做的是通过.Name
属性搜索正确的标签,该匹配器(部分)使用我的文本框的.Name
属性。这个丑陋的方法看起来有点像这样(VB.NET):
Dim redLabel As Label
For Each txt As Control In Me.Controls
If (TypeOf txt Is TextBox And txt.Text = "") Or _
(TypeOf txt Is NumericUpDown And txt.Text = "0") Then
'Change corresponding label color to red'
redLabel = CType(Me.Controls.Find("Label" & _
txt.Name.Remove(0, "TextBox".Length), True)(0), Label)
redLabel.ForeColor = Color.Red
'Get name of the non-filled field'
boxesNotFilled.Add(redLabel.Text)
End If
Next
我可以制作一个自定义控件来完成这项工作,但如果我不需要,我不想(重新发明轮子的经典问题)。逻辑上的问题是:有没有办法在控件之间提供这种交互而不搜索它们并使用 not-at-all-safe 控件命名作为约定,而不编写自定义控件?
干杯! =)
答案 0 :(得分:0)
我会使用自定义UserControl
来获取此类内容。编写简单的UserControl比向StackOverflow发布问题花费的时间更少。 :)
答案 1 :(得分:0)
以RequiredFieldValidator开头怎么样?这将在运行时为您提供ControlToValidate属性。