View difference between Paste ID: dbYAnPvf and c9aBcHsZ
SHOW: | | - or go back to the newest paste.
1
// размерность таблиц
2
private const int GRID_COLUMN_COUNT = 16;   // количество столбцов
3
private const int GRID_ROW_COUNT = 8;       // количество строк
4
5-
// при выделении таблицы1 необходимо очистить выделение таблицы2 и скопировать в таблицу2 выделение таблицы1;
5+
// при выделении ячеек таблицы1 необходимо очистить выделение ячеек таблицы2 и скопировать в таблицу2 выделение ячеек таблицы1;
6
// переменная хранит ссылку на таблицу 2, чтобы при очистке выделения делать возврат из функции grid_SelectionChanged,
7
// иначе таблица2 попытается очистить выделение таблицы1 и произойдет зацикливание
8
private DataGridView _gridForClearSelection = null;
9
10
// обработчик на изменение выделения талицы,
11
// реализует одновременное изменение выделения в обеих таблицах
12
void grid_SelectionChanged(object sender, EventArgs e)
13
{
14
    // если происходит очистка выделения таблицы, сразу выходим
15
    if (_gridForClearSelection != null && sender.Equals(_gridForClearSelection))
16
        return;
17
18
    DataGridView grid1 = (DataGridView)sender;
19
    DataGridView grid2 = grid1.Equals(dataGridView_TmciIn) ? dataGridView_TmciOut : dataGridView_TmciIn;
20
    _gridForClearSelection = grid2; // запоминаем таблицу, в которой очищаем выделение
21
    grid2.ClearSelection();         // очищаем выделение в таблице2
22
    _gridForClearSelection = null;  // забываем таблицу, в которой очищали выделение
23
24
    // копируем выделение из таблицы1 в таблицу2
25
    for (int i = 0; i < grid1.SelectedCells.Count; i++)
26
        grid2[grid1.SelectedCells[i].ColumnIndex, grid1.SelectedCells[i].RowIndex].Selected = true;
27
}