#c#
#c#
Вопрос:
Привет, я хочу сравнить две ячейки, обе со значением числа. Если ячейка1 больше ячейки2, цвет ячейки должен быть зеленым.
Вот мой код: при форматировании ячеек в datagridview
foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
if (row.Cells[3].Value.ToString() > (row.Cells[4].Value.ToString()))
{
row.Cells[3].BackColor = Color.PaleGreen;
}
Но я получаю две ошибки: в первой строке оператор ‘>’ не может быть применен к операндам типа ‘string’ и ‘string’ и во второй строке System.Windows.Формы.DataGridViewCell’ не содержит определения для ‘BackColor’ и никакого метода расширения ‘BackColor’, принимающего первый аргумент типа ‘System.Windows.Формы.DataGridViewCell’ может быть найден
Ответ №1:
Обе эти ошибки допустимы. Вы преобразуете значения ячеек в строки, но если вы хотите сравнивать как числа, вам нужно сделать их числами. Кроме того, BackColor находится в свойстве style ячейки. Итак, ваш код должен выглядеть примерно так:
foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
double value1;
double value2;
if(!double.TryParse(row.Cells[3].Value.ToString(), out value1) || !double.TryParse(row.Cells[4].Value.ToString(), out value2))
{
// throw exception or other handling here for unexcepted values in cells
}
else if (value1 > value2)
{
row.Cells[3].Style.BackColor = Color.PaleGreen;
}
Комментарии:
1. ошибка В качестве оператора могут использоваться только выражения присваивания, вызова, увеличения, уменьшения и нового объекта
2. Я получаю эту ошибку в этой строке: else (value1> value2);
3. У вас не должно быть точки с запятой (;) в конце этой строки. Если вы удалите; в конце и сделаете его else if , это сработает. Обновленный пример кода для добавления else if
4. Эта строка должна быть:
else if (value1 > value2)
5. Спасибо, чувак! Работа!
Ответ №2:
Вам нужно преобразовать строку в int, double, long, decimal или любое другое число.
В настоящее время вы пытаетесь сравнить 2 строки вместе, как если бы они были числами.
Использование .Значение без .toString() должен работать, если j правильно запомнил