2012-07-02 55 views
0

如果我在C#Win Forms應用程序中有兩個DataGridView項目,並且它們始終具有相同的列集,那麼如何確保它們總是以相同的方式排序?我可以得到一個網格或其他排序的通知,但如果我嘗試使用該通知以同樣的方式排序其他網格,我得到一個堆棧溢出(顯而易見的原因)。DataGridView排序 - 保持兩個同步

我敢肯定,我可以解決一些醜陋的黑客堆棧溢出問題,但我認爲必須有一個正常的方式來做到這一點。我不能成爲第一個需要在用戶排序時保持兩個DataGridView同步的人。

回答

1

我得到一個堆棧溢出(顯而易見的原因)。

沒有示例代碼,它們可能不明顯。你是否得到堆棧溢出,因爲每個更新通知都會更新導致無限循環的其他網格?

那麼你爲什麼不保持布爾變量來跟蹤,像這樣的狀態:

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; 
}