Как сравнить значения из DataGridViev со значением в Textbox и выделить наиболее подходящее цветом в таблице C#

301
27 февраля 2017, 10:41

Нужна помощь с программированием на C# Может ли кто то подсказать код(способ,действие),который анализирует значения в DataGridViev,вычитая значения в таблице из заданного значения и выбирая наименьшее по модулю,чтобы в итоге это значение выделялось в таблице либо цветом либо еще как нибудь Вот код моей программы:

    private void button4_Click(object sender, EventArgs e)
    {
        if (!CheckInput_Int(textBox2) ||
            !CheckInput_Double(textBox8) ||
            !CheckInput_Double(textBox9) ||
            !CheckInput_Double(textBox10) ||
            !CheckInput_Double(textBox11) ||
            !CheckInput_Double(textBox6) ||
            !CheckInput_Double(textBox7))
        {
            MessageBox.Show("Проверьте значения полей!", "Внимание!",
              MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            return;
        }
        int gg = Convert.ToInt32(textBox2.Text);
        dataGridView1.RowCount = gg;
        double
                t_kond = Convert.ToDouble(textBox8.Text), t_dear = Convert.ToDouble(textBox9.Text),
                t_oe = Convert.ToDouble(textBox10.Text), t_egu = Convert.ToDouble(textBox11.Text),
                z = Convert.ToDouble(textBox2.Text), alfa = 0.9, tp_pereddear = t_dear - 10,
                t_nach = Convert.ToDouble(textBox6.Text), p_pg = Convert.ToDouble(textBox7.Text),
              t_pv = ((t_nach - t_kond - t_oe - t_egu) / (z + 1)),
              t_pvopt = t_nach - t_pv,
              t_pvek = alfa * (t_pvopt - t_kond) + t_kond;
        double yBase = t_kond + t_oe + t_egu + t_pv;
        double[] x = new double[gg];
        double[] y = new double[gg];
        for (int i = 0; i < gg; i++)
        {
            x[i] = i + 1;
            y[i] = yBase + t_pv * i;

            dataGridView1.Rows[i].Cells[0].Value = x[i].ToString();
            dataGridView1.Rows[i].Cells[1].Value = y[i].ToString();
        }
    }
}

}

Answer 1
private void ColorCellWithClosestValue(double aValue, Color aColor)
{
  // coordinates of cell with closest value
  int col = -1; 
  int row = -1;
  // current minimal difference 
  double delta = 0;
  // current cell value
  double value;
  for (int i = 0; i < dataGridView1.Rows.Count; i++)
  {
    for (int j = 0; j < dataGridView1.Rows[i].Cells.Count; j++)
    {
      if (double.TryParse(Convert.ToString(dataGridView1.Rows[i].Cells[j].Value), out value))
      {
        if (Math.Abs(aValue - value) < delta)
        {
          delta = Math.Abs(aValue - value);
          row = i;
          col = j;
        }
      }
    }
  }
  if (row >= 0 && col >= 0)
    dataGridView1.Rows[row].Cells[col].Style.ForeColor = aColor;
}
private void btnCompareClick(object sender, EventArgs e)
{
  // call it like this:
  double value;
  if (double.TryParse(textboxCompare.Text, out value))
  {
    ColorCellWithClosestValue(value, Color.Red);
  }
}
READ ALSO
Unity не могу получить все json файлы из StreamAssets на Android

Unity не могу получить все json файлы из StreamAssets на Android

Пытаюсь получить все json файлы из папки StreamAssets на Android использую такой код

468
Вращение фигур в WPF

Вращение фигур в WPF

Есть у меня пятиконечная звезда

433
Гексагональная сетка

Гексагональная сетка

ВопросКак можно реализовать визуализацию гексагональной сетки на WPF, при том что каждая клеточка этой сетки является отдельным объектом,...

350