Обновление, я пытался понять идею @Plutonix, но я не смог реализовать ее на практике, поэтому не смог достичь решения моей проблемы.
Может кто-нибудь помочь мне с реализацией идеи @Plutonix? или любая другая идея, которая приведет к той же цели.
Я просто хочу создать набор условных операторов для каждой строки в моем наборе данных, и я хочу, чтобы эти условные операторы заполняли поля, показанные ниже.
----------------------------- // ---------------- ------------------
Я создаю приложение для Windows с базой данных доступа.
Эта база данных доступа содержит 5 столбцов и 40 строк.
Первый столбец - это идентификатор строки, второй столбец - имя человека, а остальные 3 столбца - с 1 по 25.
В моей форме моя цель - иметь коробку с именем человека и меньшие коробки внутри с оценкой, и я хочу, чтобы у этих коробок был порог, который заставляет их менять цвет спины в зависимости от оценки. Это все легко сделать, и я сделал первые 2 поля с утверждениями if, основанными на значении, найденном в текстовом поле с оценкой.
Моя проблема в том, что есть 40 строк, это означает, что мне придется сделать несколько операторов if с несколькими условиями для КАЖДОГО из студентов, и это приведет к 120 наборам кода.
Теперь ... имейте в виду, я обычно не программист, поэтому мои технические знания ограничены, но как мне проще определить пороги для всего моего набора данных, учитывая, что пороги одинаковы для всех ? Я не хочу делать оператор if для каждого порога / столбца / человека.
Вот как я это делаю сейчас:
If (Me.PersonBox1.Text < 17) Then
Me.Contract2.BackColor = Color.Crimson
Me.Label4.BackColor = Color.Crimson
Me.TextBox4.ForeColor = Color.White
Me.Label5.BackColor = Color.Crimson
Me.TextBox4.BackColor = Color.Crimson
ElseIf (Me.PersonBox1.Text>= 17 And Me.TextBox1.Text <= 18) Then
Me.Contract2.BackColor = Color.Orange
Me.Label4.BackColor = Color.Orange
Me.TextBox4.ForeColor = Color.White
Me.Label5.BackColor = Color.Orange
Me.TextBox4.BackColor = Color.Orange
ElseIf (Me.PersonBox1.Text >= 19 And Me.TextBox1.Text <= 20) Then
Me.Contract2.BackColor = Color.Gold
Me.Label4.BackColor = Color.Orange
Me.TextBox4.ForeColor = Color.White
Me.Label5.BackColor = Color.Gold
Me.TextBox4.BackColor = Color.Gold
ElseIf (Me.PersonBox1.Text >= 21 And Me.TextBox1.Text <= 22) Then
Me.Contract2.BackColor = Color.LawnGreen
Me.TextBox4.ForeColor = Color.White
Me.Label5.BackColor = Color.LawnGreen
Me.TextBox4.BackColor = Color.LawnGreen
ElseIf (Me.PersonBox1.Text > 22) Then
Me.Contract2.BackColor = Color.LimeGreen
Me.TextBox4.ForeColor = Color.White
Me.Label5.BackColor = Color.LimeGreen
Me.TextBox4.BackColor = Color.LimeGreen
Me.Label5.ForeColor = Color.White
End If
Теперь я не хочу повторять это по 120 раз на каждого учащегося в колонке, так что теперь мой разум толкает меня вот так:
Dim Var_OStatus As Integer
Dim Var_SlaAch As Integer
Dim Var_Com As Integer
Dim Var_Part As Integer
Dim Var_ContImp As Integer
Dim Var_OStab As Integer
Dim Var_PersonID As Integer
Dim table As DataTable
Dim row As DataRow
Dim column As DataColumn
For Each table In Contract_ManagementDataSet3.Tables
For Each row In table.Rows
For Each column In table.Columns
Var_OStatus = Contract_ManagementDataSet3.Tables(0).Rows(0).ToString
MsgBox("test " + Var_OStatus.ToString())
Next column
Next row
Next table
Я думаю, что это может быть путь, но я сейчас совершенно потерян.
Любые идеи будут высоко оценены.
Пример панели инструментов:
Каждый квадрат будет менять свой цвет в соответствии со значениями в нем на основе общего порога:
![enter image description here](https://i.stack.imgur.com/kVazd.jpg)
Привет