2012-07-02 37 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; 
}