В моей форме у меня есть tabcontrol с 12 вкладками.Каждая вкладка содержит много ярлыков.72 из них содержат числовые данные в свойстве .text
, которое равно либо "0"
, ""
, либо "x"
, где x - это числовое значение данных в виде строки.Остальные метки на странице предназначены для форматирования ... то есть backcolor = color.black
и используются как форма линии.Эти ярлыки .text
- это ""
Теперь, чтобы мое приложение функционировало должным образом, при загрузке форма вытягивает и заполняет эти ярлыки.
Следующее является ключом к пониманию того, почемуЯ делаю это: свойство .textchanged
меток ABC запускает математические функции и возвращает результат меткам DE F. И свойство .textchanged
меток DEF запускает математические функции и возвращает результат меткам GH I.
Математика - это деление, поэтому, если все метки еще не заполнены, а событие .textchanged
срабатывает, математика вызовет деление на ноль ошибок.
Итак, я установил флаг для каждой функции if iAmLoaded = true
, чтобысрабатывает только после того, как форма закончила заполнять метки.
Теперь, когда форма загружается, и все значения возвращаются в метки ... Мне нужно вызвать событие .textchanged
на каждой метке, которую.text
свойство <> "0"
или <> ""
Моя идея состоит в том, чтобы перебрать значение в каждой метке, содержащей значение, на 1, а затем вычесть это 1 обратно из него.
iAmLoaded = True
Dim i = 0
For Each LabelOnTheForm As Label In TabControl1.TabPages(i).Controls
'The problem is at the second iteration of the for loop, it has a button instead of a label
'How do I design a "If" statement to test if the control I am working with is a label and not a button
If LabelOnTheForm = Label Then '<--- produces error 'Label' is a class type and cannot be used as an expression
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
i = i + 1
Else
i = i + 1
End If
End If
Next
End Sub