【发布时间】:2011-07-26 05:15:18
【问题描述】:
我一直在思考这个问题一段时间了。是否有一种简洁的方式来“连接”Label 与它以功能方式标记的控件?
例如,您有一个表单来创建新的用户配置文件。如果用户未填写必填字段,则该TextBox 或NumericUpDown 或其他的Label 将变为红色。不知何故,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 控件命名作为约定,而无需编写自定义控件?
干杯! = )
【问题讨论】:
标签: .net winforms visual-studio user-interface