在我的表单上,我有一个带有12个标签页的tabcontrol。
每个标签页包含许多标签。
它们中的72个在其.text
属性中包含数字数据,这些属性可以是"0"
,""
或"x"
,其中x是作为字符串的数字数据值。
页面上的其余标签用于格式化...即backcolor = color.black
并用作线形。那些标签.text
是""
现在,为了使我的应用程序按预期运行,在加载时,表单会插入并填充这些标签。
以下是理解我为什么这样做的关键:
标签A B C的.textchanged
属性触发数学函数并将结果返回到
标签D EF。
和
标签D E F的.textchanged
属性触发数学函数并将结果返回到
标签G H I。
数学是除法的,因此,如果尚未填充所有标签并且触发.textchanged
事件,则数学将导致被零除的错误。
因此,我在每个函数if iAmLoaded = true
上设置一个标志,以仅在表单完成标签填充后才触发。
现在,一旦表单加载完毕,并且所有值都重新填充到标签中……我需要在.textchanged
属性<> {{1} }或<> .text
我的想法是将每个包含一个值的标签中的值迭代1,然后从中减去1。
"0"
答案 0 :(得分:0)
谢谢史蒂夫... 答案:
iAmLoaded = True
Dim i = 0
Do While i <> 12
For Each LabelOnTheForm As Label In TabControl1.TabPages(i).Controls.OfType(Of Label)()
If DirectCast(LabelOnTheForm, Label).Text <> "" And DirectCast(LabelOnTheForm, Label).Text <> "0" Then
DirectCast(LabelOnTheForm, Label).Text = (Convert.ToDouble(DirectCast(LabelOnTheForm, Label).Text) + 1).ToString
DirectCast(LabelOnTheForm, Label).Text = (Convert.ToDouble(DirectCast(LabelOnTheForm, Label).Text) - 1).ToString
End If
Next
i = i + 1
Loop
答案 1 :(得分:0)
使用汉斯建议进行简化:
iAmLoaded = True
Dim i = 0
Dim test As String
Do While i <> 12
For Each LabelOnTheForm As Label In TabControl1.TabPages(i).Controls.OfType(Of Label)()
Dim lbl = DirectCast(LabelOnTheForm, Label)
test = NumFormat(lbl.Text)
If test = lbl.Text And
lbl.Text <> "" And lbl.Text <> "0" Then
lbl.Text = (Convert.ToDouble(lbl.Text) + 1).ToString
lbl.Text = (Convert.ToDouble(lbl.Text) - 1).ToString
End If
Next
i = i + 1
Loop
End Sub
现在的问题是我回到了第一广场:
一旦标签加载了它们的值...上面的代码将迭代并从每个值中减去一个以触发.textchanged
事件,但是由于它是随机抽取标签的,因此它更新了其中一个标签在我的逻辑中需要来自先前标签的数据,但是上面示例中的for循环是随机抽取标签。
我有办法为它定下从表格上拉标签的命令吗?