#c#
#c#
Вопрос:
Я пытаюсь сравнить строки и столбцы с 2 datagridview. Первый столбец s1 в (DGV1) обнаружил повторяющиеся значения в s1 (DGV2). Второй столбец s2 в (DGV1) не соответствует второму столбцу s2 в (DGV2). Что не так с кодом?
for (int i = 0; i < dataGridView1.RowCount ; i )
{
for (int j = 0; j < dataGridView2.RowCount; j )
{
if ( dataGridView1.Rows[i].Cells[0].Value.ToString() ==
dataGridView2.Rows[j].Cells[0].Value.ToString())
{
dataGridView1.Rows[i].Cells[0].Style.BackColor =
Color.Yellow;
dataGridView2.Rows[j].Cells[0].Style.BackColor =
Color.YellowGreen;
}
}
}
Комментарии:
1. Ваш алгоритм никогда не докажет второй столбец. На самом деле это проверяет только первый столбец. Чтобы получить значения второго столбца, который вы должны изменить
dataGridView1.Rows[i].Cells[0].Value.ToString()
dataGridView1.Rows[i].Cells[1].Value.ToString()
. Или лучше: выполните цикл также через все столбцы с циклом fordataGridView1.ColumnCount
.
Ответ №1:
попробуй это
for (int i = 0; i < dataGridView1.RowCount ; i )
{
for (int j = 0; j < dataGridView2.RowCount; j )
{
if ( (dataGridView1.Rows[i].Cells[0].Value.ToString() ==
dataGridView2.Rows[j].Cells[0].Value.ToString()) amp;amp;
(dataGridView1.Rows[i].Cells[1].Value.ToString() ==
dataGridView2.Rows[j].Cells[1].Value.ToString()) )
{
dataGridView1.Rows[i].Cells[0].Style.BackColor =
Color.Yellow;
dataGridView1.Rows[i].Cells[1].Style.BackColor =
Color.Yellow;
dataGridView2.Rows[j].Cells[0].Style.BackColor =
Color.YellowGreen;
dataGridView2.Rows[j].Cells[1].Style.BackColor =
Color.YellowGreen;
}
}
}
Комментарии:
1. Тоже не работает. Спасибо за твои усилия, Дханушка, но проблема все еще существует…
Ответ №2:
foreach (DataGridViewRow row1 in table1.Rows) //LOOP ROWS TABLE 1
{
foreach (DataGridViewCell cell1 in row1.Cells) //LOOP COLUMNS TABLE 1
{
foreach (DataGridViewRow row2 in table2.Rows) //LOOP ROWS TABLE 2
{
foreach (DataGridViewCell cell2 in row2.Cells) //LOOP COLUMNS TABLE 2
{
if (cell1.Value != null amp;amp; cell2.Value != nullamp;amp; cell2.Value.ToString() == cell1.Value.ToString())
{
cell1.Style.BackColor = Color.Yellow;
cell2.Style.BackColor = Color.YellowGreen;
}
}
}
}
}
Привет, Marcel16, это должно решить вашу проблему:
Комментарии:
1. это работает особенно хорошо, Мар Тин!! ваш алгоритм основан на 2 строках и 2 столбцах. однажды я позволил себе увеличить строки в DGV2, но возникает ошибка, если ряд строк добавлен в DGV2. однако я хотел бы поблагодарить вас за вашу работу и поддержку!