2012-07-02 2 views
0

Если у меня есть два элемента DataGridView в приложении C# Win Forms, и они всегда имеют одинаковый набор столбцов, как я могу гарантировать, что они всегда сортируются одинаково?DataGridView Sort - держите два в синхронизации

Я могу получить уведомление, когда одна сетка или другие сортировки, но если я попытаюсь использовать это уведомление для сортировки другой сетки таким же образом, я получаю переполнение стека (по понятным причинам).

Я уверен, что я могу обойти проблему переполнения стека с помощью некоторых уродливых хаков, но я полагаю, что должен быть нормальный способ сделать это. Я не могу быть первым, когда нужно синхронизировать два DataGridViews, когда пользователь сортирует их.

ответ

1

Я получаю переполнение стека (по понятным причинам).

Без образца кода они могут быть неочевидными. Получаете ли вы переполнение стека, потому что каждое уведомление об обновлении обновляет другую сетку, что приводит к бесконечному циклу?

, то почему бы вам не держать Bools отслеживать состояние следующим образом:

bool Grid1Fired = false; 
bool Grid2Fired = false; 

void handler_Grid1(..) 
{ 
    if(Grid1Fired == false && Grid2Fired == false) 
    { 
     Grid1Fired = true; 
     SortGrids(); 
    } 
} 
void handler_Grid2(..) 
{ 
    if(Grid1Fired == false && Grid2Fired == false) 
    { 
     Grid2Fired = true; 
     SortGrids(); 
    } 
} 

void SortGrids() 
{ 
    if(Grid1Fired) 
    { 
     // sort grid 2 
    } 
    else if(Grid2Fired) 
    { 
     // sort grid 1 
    } 
    Grid1Fired = false; 
    Grid2Fired = false; 
} 
Смежные вопросы