DataGridView排序 - 保持两个同步

时间:2012-07-02 16:40:22

标签: c# .net winforms .net-3.5 datagridview

如果我在C#Win Forms应用程序中有两个DataGridView项,并且它们始终具有相同的列集,那么如何确保它们始终以相同的方式排序?

当一个网格或另一个网格排序时,我可以收到通知,但如果我尝试使用该通知以相同的方式对其他网格进行排序,则会出现堆栈溢出(原因很明显)。

我确信我可以通过一些丑陋的黑客来解决堆栈溢出问题,但我认为必须有一个正常的方法来做到这一点。当用户对它们进行排序时,我不能成为第一个需要保持两个DataGridView同步的人。

1 个答案:

答案 0 :(得分: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;
}